最近研究了一下AFNet的源码,AFNetworking建立在URL 装载系统框架的顶层,内置在Cocoa里,扩展了强有力的高级网络抽象。它拥有良好的架构,丰富的api,以及模块化构建方式,先来看一下AFNetWorking的代码的大致结构吧:
- 网络通信模块(NSURLSession)[核心请求库]
- 网络状态监听模块(Reachability)
- 网络通信安全策略模块(Security)
- 网络通信信息序列化/反序列化模块(Serialization)
AFHTTPSessionManager:我们一般做网络请求都是用这个类,但是它本身是没有做实事的,只是做了一些简单的封装,把请求逻辑分发给父类AFURLSessionManager或者其它类去做。
AFURLSessionManager 是对 NSURLSession 的封装
1.它通过 AFURLSessionManager dataTaskWithRequest:completionHandler: 等接口创建 NSURLSessionDataTask 的实例
2.持有一个字典 mutableTaskDelegatesKeyedByTaskIdentifier 管理这些 data task 实例
3.使用AFURLSessionManagerTaskDelegate管理进度
4.引入AFSecurityPolicy保证请求的安全
5.引入AFNetworkReachabilityManager监控网络状态
先简单说到这里,后续会继续整理