美文网首页
技术提升之----AFN原理解读

技术提升之----AFN原理解读

作者: 快乐的小马农 | 来源:发表于2020-12-30 18:20 被阅读0次

一.AFN的目录结构

Snip20201230_2.png

AFNetworking是封装的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

未完待续。。。。。。

相关文章

  • 技术提升之----AFN原理解读

    一.AFN的目录结构 AFNetworking是封装的NSURLSession的网络请求 AFNetworking...

  • 技术提升之----MJExtension原理解读

    一. MJExtension概述MJExtension是是一个非常易用且功能强大的第三方Model和JSON相互转...

  • iOS面试(3)-AFN和SDwebImage底层实现

    一、AFN底层原理 二、SDwebImage底层原理

  • 搜罗好文章

    不分类别,文章和博客都有,随看随记录。 AFN源码解读AFN源码解读另一个版本正确使用AFNetworking的S...

  • AFN原理

    在这个有着激烈竞争的社会中,我们必须时刻准备着,在网上我看了很多关于AFN的帖子,大致有了些理解,我们的理解从模块...

  • AFN的解读

    注意这个方法,我们常用 push pop搭配,来忽略一些编译器的警告. 要加锁的原因是因为本身我们这个字典属性是m...

  • AFN底层原理分析

    AFN底层原理分析 AFNetworking主要是对NSURLSession和NSURLCollection的封装...

  • iOS AFN底层原理

    AFN底层原理分析 AFNetworking主要是对NSURLSession和NSURLCollection(io...

  • AFN 底层原理剖析(一)之NSURLSession

    AFN的底层原理几乎是 iOS 面试必问的一个问题. 很多小伙伴纠结于 只要会用不就好了吗? 为什么面试造火车,...

  • 通读AFN-从创建manager到数据解析完毕

    流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的...

网友评论

      本文标题:技术提升之----AFN原理解读

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