runloop關(guān)系篇

NSRunloop關(guān)系篇

1.NSRunloop 與 NSTimer

.https://blog.csdn.net/u014795020/article/details/72084735

.http://www.360doc.com/content/16/1013/16/11764545_598159238.shtml

1.NSRunloop與NSTimer

主線程還是子線程會(huì)把timer自動(dòng)添加到當(dāng)前runloop.


995387AB-4DB0-44F8-BEE8-E42A4100B7F4.png
995387AB-4DB0-44F8-BEE8-E42A4100B7F4.png

timer停止,model中沒有事件,runloop 會(huì)停止,線程也就停止了。

http://www.itdecent.cn/p/b5c27669e2c1

http://www.360doc.com/content/16/1013/16/11764545_598159238.shtml

RunLoop與NSURLConnection

https://blog.csdn.net/weixin_34179968/article/details/88004386

AFNetworking3.0后為什么不再需要常駐線程?

https://blog.csdn.net/enuola/article/details/8077918

http://www.pianshen.com/article/7813250945/

AFN 的做法是把網(wǎng)絡(luò)請(qǐng)求的發(fā)起和解析都放在同一個(gè)子線程中進(jìn)行,但由于子線程默認(rèn)不開啟 runloop,它會(huì)向一個(gè) C語言程序那樣在運(yùn)行完所有代碼后退出線程。而網(wǎng)絡(luò)請(qǐng)求是異步的,這會(huì)導(dǎo)致獲取到請(qǐng)求數(shù)據(jù)時(shí),線程已經(jīng)退出,代理方法沒有機(jī)會(huì)執(zhí)行。因此,AFN 的做法是使用一個(gè) runloop 來保證線程不死~

4AB08F16-DCFB-416E-B70D-0ABC5B262960.png

1.網(wǎng)絡(luò)也是runloop mode的一個(gè)事件,Source0,當(dāng)RunloopMode里面執(zhí)行完,runloop 停止,線程停止。

3.NSConnection:

https://blog.csdn.net/u012186949/article/details/38047109

4.NSUrlSession:

https://blog.csdn.net/u012361288/article/details/54607551

2.performSelector里的aSelector方法被延遲調(diào)用問題。

  • (void)performSelector:(SEL)aSelector withObject:(id)arg; afterDelay:(NSTimeInterval)delay;

這個(gè)方法其實(shí)是增加了一個(gè)定時(shí)器,而這時(shí)aSelector應(yīng)該是被添加到了隊(duì)列的最后面,所以要等當(dāng)前調(diào)用此方法的函數(shù)執(zhí)行完畢后,selector方法才會(huì)執(zhí)行。

屏幕快照 2019-03-18 下午1.10.43.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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