分析AFNetWorking(版本3.1.0)的源码,因为涉及篇幅较长,这里分开叙述。
这里主要介绍的是AFNetworking的各种用法,希望通过这边文章,你可以知道AFNetWorking的用法及开源库内的层次结构.
写在开头
AFNetWorking 2.0版本之后就加入使用NSURLSession,因为iOS 9.0 之后将会废弃NSURLConnection,
如果你对NSURLSession和NSURLSession不熟悉的话,可以点击这里查看我之前总结的文章。
AFNetWorking 2.6之后,需要Xcode 7, 并且抛弃iOS 6和 OX 10.8的支持,也是为了更好地支持watchOS 2
AFNetWorking 3.0抛弃 NSURLConnection的支持,开始支持tvOS 9.0
基本用法
这里先说一下AFNetWorking的常规用法,说之前,先简单回顾一下NSURLSession的用法,作为对比。
请求
AFURLSessionManager 用法与NSURLSession一致
AFHTTPSessionManager的Get、POST、HEAD、PUT等用法类似,以Get为例
|
|
序列化
|
|
AFNetWorking概述
目录结构
NSURLSession
- AFURLSessionManager 核心NSURLSession管理类,实际进行Task的操作。遵从 < NSURLSessionTaskDelegate>,< NSURLSessionDataDelegate>,< NSURLSessionDownloadDelegate>和< NSURLSessionDelegate>协议。
- AFHTTPSessionManager 继承AFURLSessionManager,主要是方便HTTP的请求
Serialization
< AFURLRequestSerialization> 负责请求请求序列化
- AFHTTPRequestSerializer
- AFJSONRequestSerializer
- AFPropertyListRequestSerializer
< AFURLResponseSerialization> 负责相应序列化
- AFHTTPResponseSerializer
- AFJSONResponseSerializer
- AFXMLParserResponseSerializer
- AFXMLDocumentResponseSerializer (Mac OS X)
- AFPropertyListResponseSerializer
- AFImageResponseSerializer
- AFCompoundResponseSerializer
Additional Functionality
AFSecurityPolicy 负责安全认证
AFNetworkReachabilityManager 负责监控网络状态的
调用关系
以实际发送一个HTTP的get请求,看如何进行各模块之间的调用
一些思考
- 如何取消已经发送的网络请求
- 如何设置请求的依赖关系
- AFSessionManager对NSURLSession进行封装,主要优势是什么?