AFNetWorking
组成
- 底部:会话模块(NSURLSession)、网络监听模块(AFSecurityPolicy)、网络安全模块(AFSecurityPolicy)
- 中间层: 请求序列化、响应序列化
- 上层:UIKit集成模块
类的关系图
- 主要类AFURLSessionManager
- 继承自AFHTTPSessionManager(我们平时常用的类):包含两个模块,AFURLRequestSerialzation、AFURLResponseSerialzation
- 组成部分:NSURLSession(网络会话部分)、AFSecurityPolicy(网络安全证书验证、公钥验证)、AFSecurityPolicy(网络环境验证)
主要功能
- 创建和管理NSURLSession、NSURLSessionTask,创建网络请求
- 实现NSURLSessionDelegate等协议的代理方法,处理网络请求过程中的问题,重定向,验证挑战等网络部分
- 引入AFSecurityPolicy保证请求安全, 证书的校验,公钥的验证
- 引入AFNetworkReachabilityManager监控网络状态
SDWebImageView
异步下载并支持缓存的框架
框架组成
- UIImageView + WebCache
- SDWebImageManager:核心类
- SDImageCache:内存缓存、磁盘缓存
- SDWebImageDownLoader:网络图片下载器
加载图片流程
- 根据图片key值,在内存中查找
- 内存中未找到,进行磁盘查找
- 磁盘未找到,进行网络下载
Reactive Cocoa
函数响应式编程
信号和订阅
- 信号:信号代表一连串的状态
- 订阅:订阅信号,通过RACSubscriber来实现的,实际上就是作为一个成员变量对其block进行持有,调用subscribe时,来通过sendnext来执行这个方法
调用流程
RACSignal -> subscribeNext -> RACSubscriber -> sendNext -> sendCompleted -> end
底层原理
initialize-RACSubscriber,此时我们持有了一个成员变量,这个成员变量实际上时didSubscribe的一个block,调用RACSubscriber方法时,就是调用这个block
AsyncDisplayKit
提升iOS界面渲染性能
主要处理的问题
- Layout:文本宽高计算、视图布局计算
- Rendering:文本渲染、图形解码、图形绘制
- UIKit Objects:对象创建、对象调整、对象销毁
ASDK的实现原理
封装一个NSNode节点,我们对于视图的一些属性设置和处理在nsnode中执行,这部分可以放到后台中去执行,在RunLoop将要结束时,通过beforeWaiting通知,ASDK执行该loop内提交的所有任务,来从全局容器中提取,一次性设置给UIView