iOS runloop面試必備

1.什么是RunLoop?

從字面意思看:運(yùn)行循環(huán)、跑圈

其實(shí)它內(nèi)部就是do-while循環(huán),在這個(gè)循環(huán)內(nèi)部不斷地處理各種任務(wù)(比如Source、Timer、Observer)

一個(gè)線程對(duì)應(yīng)一個(gè)RunLoop,主線程的RunLoop默認(rèn)已經(jīng)啟動(dòng),子線程的RunLoop得手動(dòng)啟動(dòng)(調(diào)用run方法)

RunLoop只能選擇一個(gè)Mode啟動(dòng),如果當(dāng)前Mode中沒有任何Source(Sources0、Sources1)、Timer,那么就直接退出RunLoop

2.自動(dòng)釋放池什么時(shí)候釋放?

通過Observer監(jiān)聽RunLoop的狀態(tài)

第一次創(chuàng)建:第一次開啟runloop的時(shí)候

最后一次銷毀:runloop退出的時(shí)候

其他時(shí)候創(chuàng)建銷毀:當(dāng)runloop即將休眠事銷毀,重新創(chuàng)建一個(gè)新的。

3.在開發(fā)中如何使用RunLoop?什么應(yīng)用場(chǎng)景?

開啟一個(gè)常駐線程(讓一個(gè)子線程不進(jìn)入消亡狀態(tài),等待其他線程發(fā)來消息,處理其他事件)

在子線程中開啟一個(gè)定時(shí)器

在子線程中進(jìn)行一些長期監(jiān)控

可以控制定時(shí)器在特定模式下執(zhí)行

可以讓某些事件(行為、任務(wù))在特定模式下執(zhí)行

可以添加Observer監(jiān)聽RunLoop的狀態(tài),比如監(jiān)聽點(diǎn)擊事件的處理(在所有點(diǎn)擊事件之前做一些事情)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容