美文网首页
AFNetworking

AFNetworking

作者: hui8685291 | 来源:发表于2020-12-21 20:04 被阅读0次

AFN调用流程分析:

重点是task和delegate之间的绑定和解除逻辑

1.  AFHTTPSessionManager: 发起网络请求(例如GET);
2.  AFHTTPSessionManager内部调用dataTaskWithHTTPMethod:方法(内部处理requestSerializer);
3.  dataTaskWithHTTPMethod内部调用父类AFURLSessionManager的dataTaskWithRequest: uploadProgress: downloadProgress: completionHandler方法;
4.  AFURLSessionManager中的dataTaskWithRequest方法内部设置全局session和创建task;
5.  AFURLSessionManager中的dataTaskWithRequest方法内部给task设置delegate(AFURLSessionManagerTaskDelegate);
6.  taskDelegate代理的初始化: 绑定task / 存储task下载的数据 / 下载或上传进度 / 进度与task同步(KVO)
7.  task对应的AFURLSessionManagerTaskDelegate实现对进度处理、Block调用、Task完成返回数据的拼装的功能等;
8.  setDelegate: forTask: 加锁设置通过一个字典处理Task与之代理方法关联; 添加对Task开始、重启、挂起状态的通知的接收.
9.  [downloadTask resume]后执行开始, 走代理回调方法(内部其实是NSURLSession的各种代理的实现);
10.  task完成后走URLSession: task: didCompleteWithError: 回调对返回的数据进行封装;
11.  同时移除对应的task; removeDelegateForTask: 加锁移除8中的字典和通知;

相关文章

网友评论

      本文标题:AFNetworking

      本文链接:https://www.haomeiwen.com/subject/vvrdnktx.html