一.AFN的目录结构
Snip20201230_2.pngAFNetworking是封装的NSURLSession的网络请求
AFNetworking由五个模块组成:
分别由NSURLSession,Security,Reachability,Serialization,UIKit五部分组成
NSURLSession:网络通信模块(核心模块) 对应 AFNetworking中的 AFURLSessionManager和对HTTP协议进行特化处理的AFHTTPSessionManager,AFHTTPSessionManager是继承于AFURLSessionmanager的
Security:网络通讯安全策略模块 对应 AFSecurityPolicy
Reachability:网络状态监听模块 对应AFNetworkReachabilityManager
Seriaalization:网络通信信息序列化、反序列化模块 对应 AFURLResponseSerialization
UIKit:对于IOSUIKit的扩展库
二.AFN 网络请求的基本过程
创建NSURLSessionConfig对象--用创建的config对象配置初始化NSURLSession--创建NSURLSessionTask对象并resume执行,用delegate或者block回调返回数据。
AFURLSessionManager封装了上述网络交互功能
AFURLSessionManager请求过程
1.初始化AFURLSessionManager。
2.获取AFURLSessionManager的Task对象
3.启动Task
AFURLSessionManager会为每一个Task创建一个AFURLSessionmanagerTaskDelegate对象,manager会让其处理各个Task的具体事务,从而实现了manager对多个Task的管理
初始化好manager后,获取一个网络请求的Task,生成一个Task对象,并创建了一个AFURLSessionmanagerTaskDelegate并将其关联,设置Task的上传和下载delegate,通过KVO监听download进度和upload进度
NSURLSessionDelegate的响应
因为AFURLSessionmanager所管理的AFURLSession的delegate指向其自身,因此所有的
NSURLSessiondelegate的回调地址都是AFURLSessionmanager,而AFURLSessionmanager又会根据是否需要具体处理会将AFdelegate所响应的delegate,传递到对应的AFdelegate去
三.来看看最简单的一个网络请求,由此来一步步深入探讨和展开对AFN 的原理阅读
Snip20201230_3.png进入到 AFHTTPSessionManager 初始化方法的内部
Snip20201230_4.png我们可以发现他内部是产用工厂模式来创建的
我们再深入进到他调用的父类方法看看他是如何实现的
Snip20201230_5.png Snip20201230_6.png四.AFN的代理方法
NSURLSession的代理被设置为AFURLSessionManager自身。
所有的代理、都由AFURLSessionManager承接。
Snip20201230_7.png未完待续。。。。。。
网友评论