036*:AFNetwork源码分析

1:文件

 

 

 

 

2:函数调用栈

 

 

3:简单介绍

 

 

 4:AFHTTPSessionManager  介绍

1: AFHTTPSessionManager是继承AFURLSessionManager

2:AFHTTPSessionManager: 发起网络请求(例如GET);

3:AFHTTPSessionManager内部调用dataTaskWithHTTPMethod:方法(内部处理requestSerializer); dataTaskWithHTTPMethod内部调用父类AFURLSessionManager的dataTaskWithRequest: uploadProgress: downloadProgress: completionHandler方法;

4:AFURLSessionManager中的dataTaskWithRequest方法内部设置全局session和创建task;

5:AFURLSessionManager中的dataTaskWithRequest方法内部给task设置delegate(AFURLSessionManagerTaskDelegate);

6:AFURLSessionManagerTaskDelegate作用有三:

  6.1:KVO监听task对应的进度处理、Block调用、Task完成返回数据的拼装的功能等;

  6.2:setDelegate: forTask:加锁设置通过一个字典处理Taskid与之代理方法关联  NSURLSessionDelegate、NSURLSessionTaskDelegate、NSURLSessionDataDelegate、NSURLSessionDownloadDelegate

  6.3:添加对Task开始、重启、挂起状态的通知的接收.

7:[downloadTask resume]后执行开始, 走代理回调方法(内部其实是NSURLSession的各种代理的实现);

8:task完成后走URLSession: task: didCompleteWithError: 回调对返回的数据进行封装;

同时移除对应的task; removeDelegateForTask: 加锁移除8种通知和字典对应的任务id;

 

 

 

 

9:AFNetworking 在+ (void)load这个方法里面,利用Runtime交换了resume and suspend的方法实现。并且发出通知。

可以看出默认创建一个NSOperationQueue且并发数为一个,串行执行任务。

 

2:AFHTTPSessionManager,对请求方法的处理

包含GET HEAD POST OPTIONS PUT DELETE TRACE CONNECT这8个方法

 

3:AFSecurityPolicy

  关于ssl\tls 网络安全方面

 

4:AFNetworkReachabilityManager

用来监控网络环境变化的类。

 

5:AFURLRequestSerialization 请求序列化

 AFURLResponseSerialization 响应序列化

 

 

1:iOS网络请求-AFNetworking源码解析

2:AFNetworking 概述(一)

3:iOS源码补完计划--AFNetworking 3.1.0源码研读

4:AFNetWorking源码解读(持续更新...)

5:iOS_AFNetworking 结构解析+用例分析+源码阅读

6:AFN调用流程分析:

7:AFNetworking 3.0 源码解读(六)之 AFHTTPSessionManager

 

posted on 2020-12-26 00:38  风zk  阅读(138)  评论(0编辑  收藏  举报

导航