AFNetworking实现原理剖析

作者: 白水灬煮一切 | 来源:发表于2019-07-14 23:33 被阅读69次

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

    AFNetworking是封装的NSURLSession的网络请求

    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对象,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去

    相关文章

      网友评论

        本文标题:AFNetworking实现原理剖析

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