一句话笔记,某段时间内遇到或看到的某个可记录的点。
- iOS 如何检测应用是否卡顿
- 子线程是否要手动创建 autoreleasepool
- NSURLSession 相对于 NSURLConnection 有什么优点?
- CocoaPods 的原理
一、iOS 如何检测应用是否卡顿
- 直接利用 Instruments 工具来定位卡段
- 第三方库 KMCGeigerCounter 检测
- 通过监测Runloop 的 kCFRunLoopAfterWaiting,用一个子线程去检查,一次循环是否时间太长。获取kCFRunLoopBeforeSources到kCFRunLoopBeforeWaiting再到kCFRunLoopAfterWaiting的状态就可以知道是否有卡顿的情况。
二、子线程是否要手动创建 autoreleasepool ?
NSThread 和 NSOperationQueue 开辟子线程需要手动创建autoreleasepool,GCD开辟子线程不需要手动创建 autoreleasepool,因为GCD的每个队列都会自行创建autoreleasepool。
好比 block版本的遍历方式 已经内嵌了@autoreleasepool{}操作的。
三、NSURLSession 相对于 NSURLConnection 有什么优点?
- 根据每个Session做配置(http header,Cache,Cookie,protocal,Credential),不再在整个App层面共享配置.
- 支持网络操作的取消和断点续传
- 丰富的Delegate模型
- 后台处理上传和下载,即使你点击了“Home”按钮,后台仍然可以继续下载,并且提供了根据网络状况,电力情况进行处理的配置。
另外记得以前 AFNetworking 中还有一个常驻线程的潜在问题,毕竟诸多常驻线程还是会损耗 CPU 的消耗的。
四、CocoaPods 的原理
CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目。
这样, 源码管理工作任务从主项目移到了Pods项目中。
一个个组件都被编译成静态库了,只要在主项目里面引用就可以。
网友评论