RunLoop知識(shí)點(diǎn)總結(jié)

iOS筆記/復(fù)習(xí)筆記


RunLoop基本作用

  • 保持程序持續(xù)運(yùn)行下硕;
  • 處理App各種事件丁逝;
  • 節(jié)省CPU資源,提高程序性能梭姓;

RunLoop和線程的關(guān)系

  • 每條線程都有唯一的一個(gè)與之對(duì)應(yīng)的RunLoop對(duì)象霜幼;
  • RunLoop保存在一個(gè)全局的Dictionary里,線程作為key,RunLoop作為value誉尖;
  • 主線程的RunLoop已經(jīng)自動(dòng)創(chuàng)建好了罪既,子線程的RunLoop需要主動(dòng)創(chuàng)建;
  • RunLoop在第一次獲取時(shí)創(chuàng)建铡恕,在線程結(jié)束時(shí)銷毀琢感;

RunLoop的mode(運(yùn)行模式)

一個(gè) RunLoop 包含若干個(gè) Mode,每個(gè)Mode又包含若干個(gè)Source探熔、Timer驹针、Observer
每次RunLoop啟動(dòng)時(shí),只能指定其中一個(gè) Mode诀艰,這個(gè)Mode被稱作 CurrentMode
如果需要切換Mode柬甥,只能退出RunLoop,再重新指定一個(gè)Mode進(jìn)入其垄,這樣做主要是為了分隔開(kāi)不同組的Source苛蒲、Timer、Observer绿满,讓其互不影響臂外。如果Mode里沒(méi)有任何Source0/Source1/Timer/Observer,RunLoop會(huì)立馬退出

系統(tǒng)默認(rèn)注冊(cè)的5個(gè)Mode:

  • kCFRunLoopDefaultMode:App的默認(rèn)Mode,通常主線程是在這個(gè)Mode下運(yùn)行
  • UITrackingRunLoopMode:界面跟蹤 Mode漏健,用于 ScrollView 追蹤觸摸滑動(dòng)辜膝,保證界面滑動(dòng)時(shí)不受其他 Mode 影響
  • UIInitializationRunLoopMode: 在剛啟動(dòng) App 時(shí)第進(jìn)入的第一個(gè) Mode,啟動(dòng)完成后就不再使用漾肮,會(huì)切換到kCFRunLoopDefaultMode
  • GSEventReceiveRunLoopMode: 接受系統(tǒng)事件的內(nèi)部 Mode厂抖,通常用不到
  • kCFRunLoopCommonModes: 這是一個(gè)占位用的Mode忱辅,作為標(biāo)記kCFRunLoopDefaultMode和UITrackingRunLoopMode用谭溉,并不是一種真正的Mode

Source1/Source0/Timers/Observer分別代表什么

  • Source1 : 基于Port的線程間通信
  • Source0 : 觸摸事件,PerformSelectors
  • Timers : 定時(shí)器损搬,NSTimer
  • Observer : 監(jiān)聽(tīng)器柜与,用于監(jiān)聽(tīng)RunLoop的狀態(tài)

RunLoop的的運(yùn)行狀態(tài)

  • kCFRunLoopEntry: 進(jìn)入RunLoop
  • kCFRunLoopBeforeTimers: 即將處理timers
  • kCFRunLoopBeforeSources: 即將處理Sources
  • kCFRunLoopBeforeWaiting: 即將休息
  • kCFRunLoopAfterWaiting:即將被喚醒
  • kCFRunLoopExit: 退出RunLoop

RunLoop處理邏輯流程圖

1434508-d448ec1fc5171e09.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颅悉,一起剝皮案震驚了整個(gè)濱河市迁匠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌延曙,老刑警劉巖亡哄,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磺平,死亡現(xiàn)場(chǎng)離奇詭異拐辽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)菠劝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)赶诊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笼平,“玉大人寓调,你說(shuō)我怎么就攤上這事锄码。” “怎么了痛悯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵载萌,是天一觀的道長(zhǎng)巡扇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)斋枢,這世上最難降的妖魔是什么知给? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮戈次,結(jié)果婚禮上筒扒,老公的妹妹穿的比我還像新娘。我一直安慰自己悬秉,他們只是感情好冰蘑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布祠肥。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪东羹。 梳的紋絲不亂的頭發(fā)上忠烛,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天美尸,我揣著相機(jī)與錄音,去河邊找鬼求类。 笑死屹耐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惶岭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼症革,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼噪矛!你這毒婦竟也來(lái)了铺罢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缩滨,失蹤者是張志新(化名)和其女友劉穎泉瞻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體侧巨,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃泡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碉怔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮胧。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芹啥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出墓怀,到底是詐尸還是另有隱情,我是刑警寧澤虱朵,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钓账,受9級(jí)特大地震影響碴犬,放射性物質(zhì)發(fā)生泄漏梆暮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一啦粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遭顶,春花似錦泪蔫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至台猴,卻和暖如春俱两,著一層夾襖步出監(jiān)牢的瞬間曹步,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工尿孔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筹麸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓白指,卻偏偏與公主長(zhǎng)得像酵紫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子状蜗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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