iOS AFNetworking源碼閱讀(一)

? ? ? 一直使用AFNetworking卻從不知道是怎么實現(xiàn)的,這次心血來潮,想看看大牛們是怎么寫代碼的。

看了一下別人寫的AFNetworking的分析,覺得AFNetworkActivityIndicatorManager這個類比較容易看懂,那就從這個類開始閱讀吧。

AFNetworkActivityIndicatorManager是實現(xiàn),當網(wǎng)絡請求的時候,狀態(tài)欄上面的小菊花轉動。

系統(tǒng)自帶的方法是這樣實現(xiàn)的:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:networkActivityIndicatorVisible];

AFNetworking允許用戶自定義

只要下面的一句代碼即可。

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];

具體的實現(xiàn)過程可以參考http://www.cnblogs.com/polobymulberry/p/5081049.html

好的程序應該是低耦合的,我單獨把這個類抽出來寫了一個demo,點擊下載

開始網(wǎng)絡請求的時候,發(fā)送一個通知,AFNetworkActivityIndicatorManager收到通知的時候就開始轉菊花,每收到一個通知,activityCount會+1,同理,暫停請求和完成請求都會發(fā)送一個通知,activityCount會-1。當activityCount減到0的時候,就是所有的網(wǎng)絡請求都完成,就會停止轉菊花。

AFNetworkActivityIndicatorManager類里面有個靜態(tài)函數(shù),是這樣的

static NSURLRequest * AFNetworkRequestFromNotification(NSNotification *notification) {

if ([[notification object] respondsToSelector:@selector(originalRequest)]) {

return [(NSURLSessionTask *)[notification object] originalRequest];

} else {

return nil;

}}

傳進一個通知來返回一個請求實體。內(nèi)部函數(shù)又稱靜態(tài)函數(shù),因為它是static聲明的,使用內(nèi)部函數(shù),可以使函數(shù)的作用域只局限于所在文件,這樣,在不同的文件中即使有同名的內(nèi)部函數(shù),也互不干擾。至于這里為什么用靜態(tài)函數(shù),我也不知道,希望有大神能告訴我。

activityCount代表請求的數(shù)量,當開始一個請求的時候,activityCount+1,完成一個請求的時候activityCount-1,這個類里面用到了KVO來監(jiān)聽activityCount的變化,

KVO可用于檢測對象的某些屬性的實時變化情況并作出響應,因此決定KVO應該做兩件事情,一個是檢測屬性的變化,而是對變化做出響應。像下面這樣(圖片來自網(wǎng)絡)

然而AFNetworking只是對activityCount做了監(jiān)聽,并未做出響應。希望知道的可以告訴我。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,585評論 30 472
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,083評論 4 61
  • 父類實現(xiàn)深拷貝時,子類如何實現(xiàn)深度拷貝。父類沒有實現(xiàn)深拷貝時,子類如何實現(xiàn)深度拷貝。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 1,190評論 1 7
  • 致前任: 分手一月后,我終于拉黑了你的微信,不是不想再關注你的動態(tài),而是怕我忍不住再去找你,丟了我最后的尊嚴。 我...
    惠姑娘的小日子閱讀 1,327評論 0 2
  • 心心戀戀的人,為什么走不進他心里?好多人說,一個人從見的第一面就已經(jīng)決定以后要不要在一起,可是大部分人的愛情都是日...
    不是小仙女的大寶寶閱讀 202評論 0 0

友情鏈接更多精彩內(nèi)容