美文网首页
一句话笔记(46)

一句话笔记(46)

作者: 天空中的球 | 来源:发表于2020-04-29 22:22 被阅读0次

一句话笔记,某段时间内遇到或看到的某个可记录的点。

  • 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项目中。

一个个组件都被编译成静态库了,只要在主项目里面引用就可以。

相关文章

网友评论

      本文标题:一句话笔记(46)

      本文链接:https://www.haomeiwen.com/subject/utkdmhtx.html