移动开发

Swift 2G/3G/4G网络判断

我们可以引用import CoreTelephony框架下的一些API来判断当前的网络 iOS系统API定义: /* Radio Access Technology values */ @available(iOS 7.0, *) public let CTRadioAccessTechnologyGPRS: String @available(iOS 7.0, *) public let CT

全面掌握组件化ARouter,即刻吊打面试官!

前言 为了实现组件化要解决的几个问题点,其中 页面跳转、组件间通信 的问题是使用了 ARouter 这个框架来解决的。ARouter确实是专门用于做组件化改造,官方是这么介绍的: 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 是时候对 ARouter 这个强大的框架做一个解析了:它是如何做到 页面跳转、组件间通信 的?我们能从ARrouter中

被迫开始学习Typescript —— class (有彩蛋哦)

TS 的 class 看起来和 ES6 的 Class 有点像,基本上差别不大,除了 可以继承(实现)接口、私有成员、只读等之外。 参考: 基本用法 我们可以定义一个 class,设置几个属性,然后设置一个方法,封装 Object.assign 简化reactive 的赋值操作。 创建自己的对象基类 im

View.post()不靠谱的地方你知道多少

首先我们来看一段代码: 启动了两个模拟器 API 22 和API 26分别是安卓7.0以下和安卓7.0以上 下面我们就从源码分析他们之间的差别以及为啥造成的现象不同 首先我们来分析安卓7.0以下的源码流程: 当attachInfo为空时走的是ViewRootImpl.getRunQueue().post(action);代码  当atta

浅谈OC的编译时和运行时

编译时: 编译器对语言的编译阶段,对语言进行最基本的检查报错,包括词法分析、语法分析等等,将程序代码翻译成计算机能够识别的语言(例如汇编等),编译通过并不意味着程序就可以成功运行。 特点: 是静态阶段,类型错误很明显可以直接检查出来 运行时: 程序通过了编译后,编译好的代码被装载到内存中跑起来的阶段,这个时候会具体对类型进行检查,而不仅仅是对代码简单扫描分析,此时若出错,程序会崩溃。 特点: 是动

uni-app实现微信小程序横屏适配问题

1.小程序如何横屏 在手机上启用屏幕旋转支持 从小程序基础库版本 2.4.0 开始,小程序在手机上支持屏幕旋转。使小程序中的页面支持屏幕旋转的方法是:在 app.json 的 window 段中设置 "pageOrientation": "auto" ,或在页面 json 文件中配置 "pageOrientation": "auto" 。 以下是在单个页面 json 文件中启用屏幕旋转的示例。 代

iOS - 消息发送的完整流程

写在前面 在OC里面,调用对象的某个方法其实就是给这个对象发送一个消息,这个过程我们把它分为三大阶段,分别为:消息发送阶段、动态解析阶段、消息转发阶段,本文将细细剖析这三个阶段,但是在剖析这三大阶段之前我们需要先回顾一下Class的结构。 Class结构 苹果源码最新下载地址请点击:苹果源码 在objc-runtime-new.h中可以看到objc_class结构如下: struct objc_o

IOS之二进制重拍

原理 App包数据并不是在启动的时候一次全部加载到内存中的,而是类似于懒加载的方式,以每页16KB的数据进行分页加载。启动的时刻,也是缺页加载次数最多的时刻。因为启动用到的类和方法,并不是全部集中在某几页数据中,而是根据编译顺序,分散到不确定的分页数据中。我们做二进制重拍,也就是要让启动用到的函数,集中到最前边的几张表中,减少分页加载的次数,也就节约了启动时间。 那么为什么减少分页加载的次数,可以

Touch:iOS判断当前点击的位置是否在某个视图上

iOS判断当前点击的位置是否在某个视图上 记录几种判断触摸点是否在某个view上面的方法 第一种方式:isDescendantOfView: 通过touch.view调用 isDescendantOfView:方法,返回 YES, 则触摸点在我们需要判断的视图上;反之则不在。 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEv