-
《高性能iOS应用开发》读书笔记
性能指标 内存使用量 电量的消耗 应用初始化的时间 执行速度 响应速度 本地存储的使用;如果你的应用使用了本地存储,那么请提供一个清除数据的选项。 适应网络环境 数据刷新 单点登录 安全 崩溃,崩溃报告、检测和分析内存管理 iOS中内存消耗指的是应用消耗的RAM;iOS的虚拟内存模型并不包含交换内存,与桌面应用不同,这意味这磁盘不会被用来分页,最终的结果就是应用只能使用有限的RAM。应用中的内存消耗分为两部分:栈大小和堆大小 栈空间,应用中每个线程都有专用的栈空间...…
-
CC05 知识拾遗<一>
KVO的实现原理 Apple 使用了 isa 混写(isa-swizzling)来实现 KVO 。当观察对象A时,KVO机制动态创建一个新的名为: NSKVONotifying_A的新类,该类继承自对象A的本类,且KVO为NSKVONotifying_A重写观察属性的setter 方法,setter方法会负责在调用原 setter 方法之前和之后,通知所有观察对象属性值的更改情况。 NSKVONotifying_A类剖析:在这个过程,被观察对象的 isa 指针从指向原来的A类,被KVO...…
-
CC04 runTime
RunTime的用处动态交换两个方法的实现+ (void)load { // 获取两个类的类方法 Method m1 = class_getClassMethod([UIImage class], @selector(originMethod)); Method m2 = class_getClassMethod([UIImage class], @selector(exc_originMethod)); // 开始交换方法实现 method_exchange...…
-
CC03 iOS推送机制浅析
ios推送机制 可以通俗的把APNS理解为iOS系统为每个app提供的长连接通道 苹果限制了每个app在后台存活的时间,最重要的目的是为了省电,其次优化内存这些。如果彻彻底底的将app杀死了,服务端永远不能主动和客户端建立联系。所以需要一种机制来保证在必要的时候让用户知道服务端所做的改变。技术上只要只有长连接可以做到 便于苹果、用户控制:如果直接让app和服务端建立长连接(比如iOS8之前的voip,就是app在后台保持长连接),苹果是不能控制的。所以通过在app和服务端中间加一个A...…
-
CC02 《iOS核心动画高级技巧》读书笔记
《iOS核心动画高级技巧》 Core Animation,实际上是从一个叫做Layer Kit的东西演变而来的,所以做动画支持CoreAnimation特性的冰山一角 Core Animation 是一个复合引擎,他的职责就是尽可能快地组合屏幕上不同的可视内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。于是这个树性工程了UIKit以及在iOS应用中你所能在屏幕上看见的一切的基础 每一个UIView都有一个CALayer实例的图层属性,也就是所谓的Backing layer,...…
-
CC01 深入理解RunLoop
RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面 Event Loop 的逻辑。线程执行了这个函数后,就会一直处于这个函数内部 “接受消息->等待->处理” 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回 OSX/iOS 系统中,提供了两个这样的对象:NSRunLoop 和 CFRunLoopRef。CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 A...…