AFNetworking的實現原理

以下就是cocospod中AFNetworing除了幾個分類外的所有類。類庫的頭文件AFNetworking.h引入了下面的所有類庫,并可以根據不同的系統使用不同的實現方式。下面大體介紹下每個類的大致作用,主要以翻譯API的注釋文檔為主。

1.AFURLConnectionOperation
可以說是AFN最基礎的類。繼承自NSOperation類,將網絡請求依附到一個operation上。從而讓我們能夠有效的控制并觀察一個網絡請求的創建、進行、取消、完成、暫停恢復、異常等問題及狀態。

2.AFHTTPRequestOperation
HTTP或HTTPS協議請求的AFURLConnectionOperation的子類。它封裝的可接受狀態碼和內容的類型,判定一個請求結果是成功或失敗。
實際上對系統的HTTP網絡請求增加了幾個HTTP需要用到的參數。

3.AFHTTPRequestOperationManager
這個類是AFN類庫的核心類。它封裝完成了一種通用的模式,可以幫助我們輕松友好的完成請求的創建、響應的系列化,網絡狀態的監控以及安全策略以及每一個請求operation的管理(operation的相互依賴或狀態改變)。

4.AFURLSessionManager
iOS7 之后,蘋果增加了新的網絡請求類--NSURLSession。AFN官方推薦iOS 7 或者 Mac OS X 10.9以上的,最好使用該類發起網絡請求,取代AFHTTPRequestOperationManager。不過基于目前國內app大都最低適配的 iOS6,該類的用途還不是太廣泛。NSURLSession的說明或者使用不再贅述。自行查看API文檔。以后有時間再加上該類的使用。

5: AFURLSessionManager
繼承自AFURLSessionManager。類似于1和2的關系。也是方便HTTP以及https請求的使用,增加了一些接口,方便調用。

6:AFNetworkReachabilityManager
網絡的連通狀態監控以及網絡的類型。實際是將蘋果官方提供的Reachability的類名和通知名更換了一下,防止和系統提供的類的通知名以及類名的沖突。

7.AFSecurityPolicy
這個我不太懂,安全策略的類。一般貌似用不到,有需要自行google。

8.AFURLRequestSerialization
①:符合這個協議的對象用于處理請求,它將請求參數轉換為 query string 或是 entity body 的形式,并設置必要的 header。
②:構建multipart請求。

9.AFURLResponseSerialization
遵循AFURLResponseSerialization協議的對象,用于驗證、序列化響應及相關數據,轉換為有用的形式,比如 JSON 對象、圖像、甚至基于mantle的模型對象。

AFHTTPRequestOperationManger

①:綜述
這個類可以說是整個類庫的核心類了。據說AFN2.0之前的時候,所有的網絡請求相關的設置都雜糅到一個client中,導致client特別的臃腫。2.0后,AFN將一些設置提取出來,線程了專門的類【AFSecurityPolicy、AFURLRequestSerialization、AFURLResponseSerialization】。現在看來,AFN整體的設計是非常完美的。耦合性變得非常低,一些1.0版本中存在的問題也得到了改善。

②:實現文件.m
實現文件較為簡單,可以看到他創建了一個隊列。并將各個operation加入到隊列中。在隊列中,各個請求就可以設置依賴關系,并發的數量等等。

③:接口文件.h
接口文件中,我們可以看到。這個類可以設置AFSecurityPolicy、AFURLRequestSerialization、AFURLResponseSerialization 等參數了。這就是綜述所說的降低耦合性的方式。基本使用很簡單,這里就不再贅述了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容