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.


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 來保證線程不死~

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í)行。
