什么是RunLoop
- 從字面意思看,運(yùn)行循環(huán),轉(zhuǎn)圈
- 從內(nèi)部看就是一個(gè)高級的do-while循環(huán),這個(gè)循環(huán)不斷地處理各種任務(wù)(比如Source\timer\Observer)
- 一個(gè)線程對應(yīng)一個(gè)RunLoop,主線程的RunLoop默認(rèn)已經(jīng)啟動,子線程的RunLoop得手動啟動(調(diào)用run的方法)
RunLoop只能選擇一個(gè)Mode啟動,如果當(dāng)前Mode中沒有任何Source\Timer\Observer,那么就直接退出RunLoop
自動釋放池什么時(shí)候釋放
- 在RunLoop睡眠之前釋放(KCFRunLoopBeforeWaiting)
開發(fā)中如何使用RunLoop?什么應(yīng)用場景
- 開啟一個(gè)常駐線程(讓一個(gè)子線程不進(jìn)入消亡狀態(tài),等待其他線程發(fā)來消息,處理其他事件)
- 在我們子線程中長期監(jiān)控一個(gè)行為
-- 在子線程中開啟一個(gè)定時(shí)器
- 可以控制定時(shí)器在特定模式下執(zhí)行
- 可以讓某些事件(行為\任務(wù))在特定模式下執(zhí)行
![
![Snip20160322_1.png](http://upload-images.jianshu.io/upload_images/1329661-a7c405da088305b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://upload-images.jianshu.io/upload_images/1329661-3abbf757e9aa1b18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)