AFNetworking框架-詳細解析

檀志文發表於2017-12-14

我相信學習iOS超過半年以上的同學們應該都用過這個庫,現在市場上目前大多數的app,不吹逼至少百分之98以上都用這個庫,為什麼這麼火呢?它提供給大家的公共方法就是那麼好嗎?大家都真的瞭解裡面的實現原理和思想嗎?難道不想進一步的知道和發掘內在的東西嗎?

我也是學習iOS的,我相信只要是抱著以後將來不說5年,3年之內還想一直幹iOS的朋友,應該都想知道這個東西到底是什麼!下面我們就來一一分析吧。


AFNetworking框架-詳細解析

在github上面的stars也是居高不下的!

下面自己測試下:

AFNetworking框架-詳細解析

一般用到最多的就是這些,那麼這些是什麼東西呢?

其實AFN中分為5個具體的模組:
1 AFURLSessionManager/AFHTTPSessionManger:網路通訊模組

2 Reachability : 網路狀態監聽模組

3 Security:網路通訊安全策略模組

4 Serialization: 序列化和反序列化模組

5 其實還有一個重大的模組: UIKit: 對於iOS UIKit庫的擴充套件

這裡面的核心就是:1 網路通訊模組 

這個AFURLSessionManager  是圍繞著 NSURLSession 封裝的,其他的都是圍繞配合它使用的一個擴充套件的工具包。

AFHTTPSessionManager 是繼承AFURLSessionManager ,一般的網路請求都是用它


AFNetworking框架-詳細解析

在AFURLSessionManager的初始化的方法中:


AFNetworking框架-詳細解析

上面的部分程式碼函式有點看不懂,接下來先看看它裡面我們常用的網路請求方法:

AFNetworking框架-詳細解析

在這裡可以清楚的看到

AFNetworking框架-詳細解析

就直接跳進去看看到底做了些什麼東西


AFNetworking框架-詳細解析

注意了這個方法做了兩件事:


1.用self.requestSerializer和各種引數去獲取了一個我們最終請求網路需要的NSMutableURLRequest例項。

2呼叫另外一個方法dataTaskWithRequest去拿到我們最終需要的NSURLSessionDataTask例項,並且在完成的回撥裡,呼叫我們傳過來的成功和失敗的回撥。

好了,接下來我們先來分析下剛才第一個requestSerializer 中的request的請求方法,看看它到底做了哪些事情?

相關文章