AFN 的做法是把網(wǎng)絡請求的發(fā)起和解析都放在同一個子線程中進行,但由于子線程默認不開啟 runloop,它會向一個 C語言程序那樣在運行完所有代碼后退出線程。而網(wǎng)絡請求是異步的,這會導致獲取到請求數(shù)據(jù)時,線程已經退出,代理方法沒有機會執(zhí)行。因此,AFN 的做法是使用一個 runloop 來保證線程不死~
然而頻繁的創(chuàng)建線程并啟動runloop肯定會造成內存泄露(runloop 無法停止.線程無法退出)
所以AFN就創(chuàng)建了一個單例線程,并且保證線程不退出~
AFN為什么添加一條常駐線程
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 在討論 runloop 相關的文章,以及分析 AFNetworking(2.x) 源碼的文章中,我們經常會看到關于...