iOS之深入解析Runloop的底层原理
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析Runloop的底层原理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、Runloop 簡介
① 什么是 Runloop ?
- RunLoop 是事件接收和分發(fā)機(jī)制的一個(gè)實(shí)現(xiàn),是線程相關(guān)的基礎(chǔ)框架的一部分,一個(gè) RunLoop 就是一個(gè)事件處理的循環(huán),用來不停的調(diào)度工作以及處理輸入事件。
- Runloop 不僅僅是一個(gè)運(yùn)行循環(huán)(do-while 循環(huán)),也是提供了一個(gè)入口函數(shù)的對(duì)象,消息機(jī)制處理模式,運(yùn)行循環(huán)從兩種不同類型的源接收事件。
- 輸入源提供異步事件,通常是來自另一個(gè)線程或來自不同應(yīng)用程序的消息。定時(shí)器源提供同步事件,發(fā)生在預(yù)定時(shí)間或重復(fù)間隔。
- 兩種類型的源都使用特定于應(yīng)用程序的處理程序例程來處理事件。除了處理輸入源之外,Runloop 還會(huì)生成有關(guān) Runloop 行為的通知。
- 已注冊的運(yùn)行循環(huán)觀察器可以接收這些通知并使用它們在線程上執(zhí)行其他處理。
② Runloop 作用
- 當(dāng)啟動(dòng)一個(gè) iOS APP 時(shí)主線程啟動(dòng)與其對(duì)應(yīng)的 RunLoop 也已經(jīng)開啟,如果不殺掉 APP 則會(huì)一直運(yùn)行,就是因?yàn)?RunLoop 循環(huán)一直為開啟狀態(tài)保證主線程不會(huì)被摧毀,這也是 RunLoop 的作用之一:保證線程不退出,保持程序的持續(xù)運(yùn)行。
- RunLoop 在循環(huán)過程中監(jiān)聽事件,當(dāng)前線程有任務(wù)時(shí),喚醒當(dāng)當(dāng)前線程去執(zhí)行任務(wù),任務(wù)執(zhí)行完成以后,使當(dāng)前線程進(jìn)入休眠狀態(tài)。當(dāng)然這里的休眠不同于我們寫的死循環(huán) while(1),它在休眠時(shí)幾乎不會(huì)占用系統(tǒng)資源,這是由操作系統(tǒng)內(nèi)核去負(fù)責(zé)實(shí)現(xiàn)的。
- 處理 App 中的各種事件(觸摸、定時(shí)器、perfor
總結(jié)
以上是生活随笔為你收集整理的iOS之深入解析Runloop的底层原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS之深入解析自动释放池autorel
- 下一篇: iOS之深入解析内存管理Tagged P