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