一 什么是RunLoop?
從字面意思看就是運行循環,其實內部就是do-while循環,這個循環內部不斷地處理各種任務(比 如Source,Timer,Observer)
一個線程對應一個RunLoop,主線程的RunLoop默認已經啟動,子線程的RunLoop得手動啟動(run方法)
RunLoop只能選擇一個Mode啟動,如果當前Mode中沒有任何Source,Timer,Observer,那么就直接退出RunLoop
二 你在開發過程中怎么使用RunLoop?什么應用場景?
開啟一個常駐線程(讓一個子線程不進入消亡狀態,等待其他線程發來的消息,處理其他事件)
在子線程中開啟一個定時器
在子線程中進行一些長期監控
可以控制定時器在特定模式下運行
可以讓某些事件(行為,任務)在特定模式下執行
可以添加observer監聽RunLoop的狀態,比如監聽點擊事件的處理(比如在所有點擊事件前做一些處理)
三 自動釋放池什么時候釋放?
在RunLoop睡眠之前釋放(kCFRunLoopBeforeWaiting)