本文不对AFNetworking
作全面的解析,仅对比解析一下2.x
和3.x
的差异。
AFNetworking
分为如下5个功能模块
:
- 网络通信模块(
AFURLSessionManager、AFHTTPSessionManger
) - 网络状态监听模块(
Reachability
) - 网络通信安全策略模块(
Security
) - 网络通信信息序列化/反序列化模块(
Serialization
) - 对于
iOS UIKit
库的扩展(UIKit
)
-
AFNetworking 2.x
需要常驻线程而3.x
不需要常驻线程
2.x
常驻线程用来并发请求和处理数据回调
,避免多个网络请求的线程开销(不用开辟一个线程,就保活一条线程
);而3.x
不需要常驻线程是因为NSURLSession
可以指定回调delegateQueue
,NSURLConnection
不行;
NSURLConnection
的一大痛点就是:发起请求后,需要一直处于等待回调的状态
。而3.x
后NSURLSession
解决了这个问题;NSURLSession
发起的请求,不再需要在当前线程进行回调,可以指定回调的d