什么是RunLoop
- 從字面意思看,運行循環(huán),轉圈
- 從內部看就是一個高級的do-while循環(huán),這個循環(huán)不斷地處理各種任務(比如Source\timer\Observer)
- 一個線程對應一個RunLoop,主線程的RunLoop默認已經啟動,子線程的RunLoop得手動啟動(調用run的方法)
RunLoop只能選擇一個Mode啟動,如果當前Mode中沒有任何Source\Timer\Observer,那么就直接退出RunLoop
自動釋放池什么時候釋放
- 在RunLoop睡眠之前釋放(KCFRunLoopBeforeWaiting)
開發(fā)中如何使用RunLoop?什么應用場景
- 開啟一個常駐線程(讓一個子線程不進入消亡狀態(tài),等待其他線程發(fā)來消息,處理其他事件)
- 在我們子線程中長期監(jiān)控一個行為
-- 在子線程中開啟一個定時器
- 可以控制定時器在特定模式下執(zhí)行
- 可以讓某些事件(行為\任務)在特定模式下執(zhí)行

](http://upload-images.jianshu.io/upload_images/1329661-3abbf757e9aa1b18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)