第三方库内容如下:
- AFNetworking
- SDWebImageView
- Reactive Cocoa
- AsyncDisplayKit
- 等等
第三方库.png
1. AFNetworking
iOS客户端的第三方网络框架
AFNetworking.png
AFURLSessionManager
- 创建和管理NSURLSession,NSURLSessionTask
- 实现NSURLSessionDelegate等协议的代理方法
- 引入AFSecurityPolicy保证请求安全
- 引入AFNetworkReachabilityManager监控网络状态
2. SDWebImageView
异步下载图片缓存的框架
SDWebImageView.png
加载图片流程
- 查找内存缓存
- 查找磁盘缓存
- 网络下载
3. Reactive Cocoa
函数响应式编程框架
- 信号
ReactiveCocoa中的核心类RACSignal
RACSignal继承于RACStream
RACSignal子类RACDynamicSignal,RACReturnSignal,RACEmptySignal,RACErrorSignal
- 信号代表一连串的状态
- 在状态改变时,对应的订阅者RACSubscriber就会收到通知执行相应的指令
4. AsyncDisplayKit
提升界面渲染性能
-
处理问题
- 解决布局耗时计算,文本宽高计算,视图布局计算
- 解决渲染问题,文本渲染,图片解码,图形绘制
- UIKit对象,对象创建,对象调整,对象烧毁
- 减轻主线程的压力,能把更多事情交给子线程做
-
基本原理
AsyncDisplayKit 基本原理
- UIView作为CALayer的delegate
- CALayer作为UIView的成员变量
- AsyncDisplayKit封装了ASNode的类
- ASNode有一个view的成员变量,生成view
- UIView有个node的属性,可以获取到对应的节点
- ASNode可以放到后台线程中处理,是线程安全
- UIView,CALayer等在主线程中使用
- ASNode的修改和提交,会对其进行封装并提交到一个全局容器当中
- AsyncDisplayKit也在RunLoop中注册一个观察者
- 当RunLoop进入休眠前, AsyncDisplayKit执行该loop内提交的所有任务
面试题
- 系统的UI事件传递机制是怎样的?
- KVO的实现原理?
- 消息传递机制和消息转发流程
- 当一个对象废弃的时候,指向它的weak指针为何会自动置为nil?
- Block的实质?使用Block为何容易产生循环引用?
- 怎样利用GCD实现高效的多读单写逻辑?
- RunLoop为何能做到有事做事,没事休息?
- 怎样解决DNS劫持?
- 怎样设计一个图片缓存框架?
- 请编写查找一个字符串中,第一个只出现一次的字符的算法









网友评论