AFNetworking实现原理剖析

AFNetworking:(锁用的是NSLock,SDWebImage锁信号量)

AFNetworking是封装的NSURLSession的网络请求,线程NSOperation 最大并发数1,保证  每一个网络请求的串行进行(先来后到顺序执行)

self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];

把session中所有taskData都是异步执行,相当于一个异步线程,所以这个方法意思就是把session的线程执行交给个这个operationQueue队列来进行执行session的线程。

AFNetworking由五个模块组成:

分别由NSURLSession,Security安全策略,Reachability网络环境监测,Serialization请求头和响应体 设置,UIKit五部分组成

NSURLSession:网络通信模块(核心模块) 对应 AFNetworking中的 AFURLSessionManager是对HTTP协议进行特化处理的

AFHTTPSessionManager是继承于AFURLSessionmanager的

Security:网络通讯安全策略模块  对应 AFSecurityPolicy ——> https请求安全证书问题,私有公钥证书验证

Reachability:网络状态监听模块 对应AFNetworkReachabilityManager

Seriaalization:网络通信信息序列化、反序列化模块 对应

        1>AFURLRequestSerialization :设置请求头属性&参数

         2>AFURLResponseSerialization:响应体信息——>解析json&XML 

UIKit:对于iOS UIKit的扩展库


网络请求的过程

创建NSURLSessionConfig对象--用创建的config对象配置初始化NSURLSession--创建NSURLSessionTask对象并resume执行,用delegate或者block回调返回数据。

AFURLSessionManager封装了上述网络交互功能

AFURLSessionManager请求过程

1.初始化AFURLSessionManager。

2.AFURLSessionManager的属性NSURLSession会根据request生产——>Task任务对象

3.启动Task任务

AFURLSessionManager会

为每一个Task创建一个AFURLSessionmanagerTaskDelegate对象,代理对象内实现了Session的请求代理,并且 执行该请求的task的 uploadProgressBlock、downloadProgressBlock、completionHandler 三个block回调

每个dateTask任务的唯一IDtaskIdentifier系统自动分配的

每个dateTask的taskDescription任务描述为 代理对象的 指针地址,每次任务请求完

可变字典里存储  任务代理对象 (字典:taskDescription为key,代理对象为value),任务请求完后 ——>字典就移除这个 任务代理对象。

manager会让其处理各个Task的具体事务,从而实现了manager对多个Task的管理

初始化好manager后,获取一个网络请求的Task,生成一个Task对象,并创建了一个AFURLSessionmanagerTaskDelegate并将其关联,设置Task的上传和下载delegate,通过KVO监听download进度和upload进度

NSURLSessionDelegate的响应

因为AFURLSessionmanager所管理的AFURLSession的delegate指向其自身,因此所有的

NSURLSessiondelegate的回调地址都是AFURLSessionmanager,而AFURLSessionmanager又会根据是否需要具体处理会将AF delegate所响应的delegate,传递到对应的AF delegate去

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容