我相信学习iOS超过半年以上的同学们应该都用过这个库,现在市场上目前大多数的app,不吹逼至少百分之98以上都用这个库,为什么这么火呢?它提供给大家的公共方法就是那么好吗?大家都真的了解里面的实现原理和思想吗?难道不想进一步的知道和发掘内在的东西吗?
我也是学习iOS的,我相信只要是抱着以后将来不说5年,3年之内还想一直干iOS的朋友,应该都想知道这个东西到底是什么!下面我们就来一一分析吧。
在github上面的stars也是居高不下的!
下面自己测试下:
一般用到最多的就是这些,那么这些是什么东西呢?
其实AFN中分为5个具体的模块:
1 AFURLSessionManager/AFHTTPSessionManger:网络通信模块
2 Reachability : 网络状态监听模块
3 Security:网络通信安全策略模块
4 Serialization: 序列化和反序列化模块
5 其实还有一个重大的模块: UIKit: 对于iOS UIKit库的扩展
这里面的核心就是:1 网络通信模块
这个AFURLSessionManager 是围绕着 NSURLSession 封装的,其他的都是围绕配合它使用的一个扩展的工具包。
AFHTTPSessionManager 是继承AFURLSessionManager ,一般的网络请求都是用它
在AFURLSessionManager的初始化的方法中:
上面的部分代码函数有点看不懂,接下来先看看它里面我们常用的网络请求方法:
在这里可以清楚的看到
就直接跳进去看看到底做了些什么东西
注意了这个方法做了两件事:
1.用self.requestSerializer和各种参数去获取了一个我们最终请求网络需要的NSMutableURLRequest实例。
2调用另外一个方法dataTaskWithRequest去拿到我们最终需要的NSURLSessionDataTask实例,并且在完成的回调里,调用我们传过来的成功和失败的回调。
好了,接下来我们先来分析下刚才第一个requestSerializer 中的request的请求方法,看看它到底做了哪些事情?