AF的代碼結(jié)構(gòu)大部分人應(yīng)該都了解,這里梳理,整體代碼有這么幾部分:
-
AFURLSessionManager/AFHTTPSessionManager
這里就是AF代碼的核心了,主要負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求的發(fā)起,回調(diào)處理,是在系統(tǒng)網(wǎng)絡(luò)相關(guān)API上的一層封裝。大部分邏輯是在AFURLSessionManager里面處理的,AFHTTPSessionManager則是專(zhuān)為HTTP請(qǐng)求提供了一些便利方法。如果需要擴(kuò)展其他協(xié)議的功能(比如FTP協(xié)議),可以考慮從AFURLSessionManager創(chuàng)建一個(gè)子類(lèi)。
-
AFURLRequestSerialization/AFURLResponseSerialization
這兩兄弟主要處理一些參數(shù)序列化相關(guān)的工作。AFURLRequestSerialization是將傳入的參數(shù)構(gòu)造成NSURLRequest,比如自定義的header,一些post或者get參數(shù)等等。 AFURLResponseSerialization主要是將系統(tǒng)返回的NSURLResponse處理成我們需要的responseObject,比如json、xml、image等等
-
AFSecurityPolicy
處理https相關(guān)的公鑰和驗(yàn)證邏輯。目前由于蘋(píng)果ATS的開(kāi)啟,基本HTTPS已經(jīng)成為標(biāo)配。雖然通常直接使用CA來(lái)驗(yàn)證服務(wù)器公鑰的情況下,不需要我們額外做什么配置。但是從這里出發(fā),順便考察一下HTTPS相關(guān)的知識(shí)點(diǎn),感覺(jué)也比較常見(jiàn),具體面試題可看下文
-
AFNetworkReachabilityManager
這個(gè)其實(shí)是比較獨(dú)立的一個(gè)模塊了,提供獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)的功能。
-
UIKit+AFNetworking
這里主要是通過(guò)Category來(lái)提供了一下UIkit的便利方法