1、什么是RunLoop
RunLoop 是通過內(nèi)部維護(hù)的事件循環(huán)來對事件/消息進(jìn)行管理的一個(gè)對象(有事時(shí)候做事,沒事的時(shí)候休息)荐操。
·事件循環(huán)是什么攘宙?
a疗绣、沒有消息需要處理時(shí)多矮,休眠以避免資源占用前酿。
b罢维、有消息需要處理時(shí)颜阐,立刻被喚醒。
這兩點(diǎn)都是通過事件循環(huán)來實(shí)現(xiàn)的李剖。
維護(hù)的事件循環(huán)可以用來不斷的處理消息/事件充择,然后對他們進(jìn)行管理同時(shí)當(dāng)沒有消息需要處理時(shí)萄窜,休眠以避免資源占用(由用戶態(tài) ——>內(nèi)核態(tài)的切換);有消息需要處理時(shí),立刻被喚醒。(由內(nèi)核態(tài) ——>用戶態(tài)的切換)
.為什么main函數(shù)能保持不退出履肃?
在main函數(shù)中它調(diào)用的了UIApplicationMain仔沿,而
在UIApplicationMain這個(gè)函數(shù)內(nèi)部會(huì)啟動(dòng)一個(gè)主線程的RunLoop,而RunLoop又是一個(gè)對事件循環(huán)的維護(hù)機(jī)制尺棋,
可以做到有事情做時(shí)候做事封锉,
沒有事做時(shí)候可以通過用戶態(tài)到內(nèi)核態(tài)的切換進(jìn)行休眠以避免資源占用。當(dāng)前線程是處于一個(gè)休眠狀態(tài).