AFNetworking框架预览
2018-08-11 本文已影响21人
春风依旧
前言:
作为一个iOS开发,对网络请求库AFN再熟悉不过了,我在平时开发中只是用了它的部分功能,对它的实现原理并不是很清楚,所以决定通读一下这个框架,对他的实现原理能有更好,更深入的了解
一、AFN分为5个功能模块
- 网络通信模块(AFURLSessionManager、AFHTTPSessionManger)
- 网络状态监听模块(Reachability)
- 网络通信安全策略模块(Security)
- 网络通信信息序列化/反序列化模块(Serialization)
- 对于iOS UIKit库的扩展(UIKit)
![](https://img.haomeiwen.com/i2358583/9fe991b5aa5afab0.png)
- AFURLSessionManager是核心类,虽然后缀是Manager,不过并不是单例。数据,上传,下载三种业务都在这里完成
- AFURLSessionManager中,输入信息仍然使用URLRequest,自定义的AFHTTPRequestSerializer并没有使用
- AFURLSessionManager中, 安全和网络可达性都有专门的类负责,在初始化函数中一并启动
- 数据通讯,相对来说,还是使用AFHTTPSessionManager更方便,这里用到了AFHTTPRequestSerializer,对URLRequest做了一层封装
- AFHTTPSessionManager也不是单例,虽然提供了+ (instancetype)manager方法。
二、体系结构
NSURLSession
AFURLSessionManager
AFHTTPSessionManager
Serialization
-
<AFURLRequestSerialization>
AFHTTPRequestSerializer
AFJSONRequestSerializer
AFPropertyListRequestSerializer
-
<AFURLResponseSerialization>
AFHTTPResponseSerializer
AFJSONResponseSerializer
AFXMLParserResponseSerializer
-
AFXMLDocumentResponseSerializer
(macOS) AFPropertyListResponseSerializer
AFImageResponseSerializer
AFCompoundResponseSerializer
Additional Functionality
AFSecurityPolicy
AFNetworkReachabilityManager