CFRunLoop -- 概述

緣由: 或許也許大概是因?yàn)閷憳I(yè)務(wù)太無聊了倚喂,決定和新來的同事一起搞點(diǎn)事情巷帝。最后我們決定根據(jù)官方文檔整理一下 CFRunLoop 的相關(guān)知識(后續(xù)待定...),在閱讀過程中我決定嘗試翻譯一下瘩例,話不多說矢劲,這就開始赦拘。


  • CFRunLoop 對象負(fù)責(zé)監(jiān)測輸入源并將它們作為"任務(wù)"加入隊(duì)列,并且對隊(duì)列中的任務(wù)進(jìn)行分發(fā)控制芬沉。
    輸入源包括輸入設(shè)備躺同、網(wǎng)絡(luò)任務(wù)、周期性或延遲性事件以及異步回調(diào)丸逸。

  • runLoop 可以監(jiān)監(jiān)測3種對象:CFRunLoopSource蹋艺、CFRunLoopTimer、CFRunLoopObserver黄刚。你必須通過CFRunLoopAddSource()捎谨、CFRunLoopAddTimer()CFRunLoopAddObserver() 方法將他們加入 runLoop 來監(jiān)聽它們在隊(duì)列中執(zhí)行時(shí)的回掉,你能夠?qū)⑺鼈円瞥?runLoop 從而放棄監(jiān)聽隘击。

  • 這些對象被加入 runLoop 時(shí)必須關(guān)聯(lián)一個(gè)或者多個(gè) CFRunLoopMode。runLoop 每次只會運(yùn)行在一個(gè) mode(模式) 中研铆,且隊(duì)列中只關(guān)聯(lián)當(dāng)前 mode 的事件埋同,runLoop 默認(rèn)運(yùn)行在 defaultMode (負(fù)責(zé)線程日常空閑的任務(wù)分配)棵红,系統(tǒng)也定義了一些其他的 mode 來對其他的任務(wù)進(jìn)行分發(fā)(例如監(jiān)聽 UIScrollerView 的滑動在 trackingMode: 其實(shí)是 NSRunLoop 中的 mode)凶赁,由于 runLoop 的 mode 本質(zhì)是規(guī)定一個(gè)字符串常量座位唯一標(biāo)識符,你也可以自定義一個(gè) mode 來控制任務(wù)隊(duì)列逆甜。

  • Core Foundation 中還定義了一個(gè)特別的 mode: commonModes虱肄。他表示 mode 的一個(gè)集合(包含當(dāng)前 runLoop 中的 mode ,每一個(gè) runLoop 都有自己的 commonModes 并且默認(rèn)含有 defaultMode)交煞,調(diào)用 CFRunLoopAddCommonMode() 方法可以向 commonModes 中添加 mode咏窿。

  • 一個(gè)線程僅有唯一確定的一個(gè)runLoop,你無法更改線程所對應(yīng)的 runLoop素征,Core Foundation 會在你需要的時(shí)候自動創(chuàng)建 runLoop集嵌,你只能通過 CFRunLoopGetCurrent() 方法來獲得當(dāng)前 runLoop。CFRunLoopRun()使其在 defaultMode 運(yùn)行御毅、CFRunLoopRunInMode() 則可以指定 mode 運(yùn)行根欧, CFRunLoopStop() 使 runLoop 停止。只要 runLoop 隊(duì)列中有一個(gè)任務(wù)端蛆,該 runLoop 就能夠運(yùn)行凤粗。

  • runLoop 能夠遞歸調(diào)用。你能夠在任意 runLoop 執(zhí)行時(shí)使用 CFRunLoopRun()CFRunLoopRunInMode() 在當(dāng)前線程創(chuàng)建一個(gè)子 runLoop 然后在當(dāng)前線程調(diào)用棧中激活子 runLoop今豆。并且你可以不受限制的讓它以任何 mode 運(yùn)行(只要是你可以獲得到的 mode)嫌拣。

  • Cocoa Touch 基于 CFRunLoop 實(shí)現(xiàn)了一個(gè)高等的事件循環(huán)機(jī)制 (NSRunLoop)柔袁。我們實(shí)際開發(fā)時(shí)可以向 NSRunLoop 實(shí)例中添加 sources、timers 以及 observers 并且指定 mode亭罪,他們就會成為應(yīng)用的事件循環(huán)中的一部分瘦馍。getCFRunLoop() 方法可獲得當(dāng)前 runLoop 相應(yīng)的 CFRunLoop 類型。


ps: 第一次翻譯应役,表示看的懂不代表能夠流暢的用英文翻譯出來情组。如有錯(cuò)誤,謝謝指正箩祥。

下節(jié)介紹 CFRunLoop 中的 API...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末院崇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袍祖,更是在濱河造成了極大的恐慌底瓣,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕉陋,死亡現(xiàn)場離奇詭異捐凭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凳鬓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門茁肠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缩举,你說我怎么就攤上這事垦梆。” “怎么了仅孩?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵托猩,是天一觀的道長。 經(jīng)常有香客問我辽慕,道長京腥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任溅蛉,我火速辦了婚禮绞旅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘温艇。我一直安慰自己因悲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布勺爱。 她就那樣靜靜地躺著晃琳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卫旱,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天人灼,我揣著相機(jī)與錄音,去河邊找鬼顾翼。 笑死投放,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的适贸。 我是一名探鬼主播灸芳,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拜姿!你這毒婦竟也來了烙样?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蕊肥,失蹤者是張志新(化名)和其女友劉穎谒获,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壁却,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡批狱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了展东。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赔硫。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琅锻,靈堂內(nèi)的尸體忽然破棺而出卦停,到底是詐尸還是另有隱情向胡,我是刑警寧澤恼蓬,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站僵芹,受9級特大地震影響处硬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拇派,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一荷辕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧件豌,春花似錦疮方、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春惫谤,著一層夾襖步出監(jiān)牢的瞬間壁顶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工溜歪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留若专,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓蝴猪,卻偏偏與公主長得像调衰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子拯腮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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

  • 前言 最近離職了,可以盡情熬夜寫點(diǎn)總結(jié)窖式,不用擔(dān)心第二天上班爽并蛋疼著,這篇的主角 RunLoop 一座大山动壤,涵蓋的...
    zerocc2014閱讀 12,368評論 13 67
  • 原文地址:http://blog.ibireme.com/2015/05/18/runloop/ RunLoop ...
    大餅炒雞蛋閱讀 1,148評論 0 6
  • 轉(zhuǎn)載:http://www.cocoachina.com/ios/20150601/11970.html RunL...
    Gatling閱讀 1,436評論 0 13
  • 轉(zhuǎn)自http://blog.ibireme.com/2015/05/18/runloop 深入理解RunLoop ...
    飄金閱讀 976評論 0 4
  • 每清晨拉開窗萝喘, 打開心扉, 接受那安好的希望琼懊。 每天阁簸, 站在心靈的廢墟上, 戴上笑的面具哼丈, 看不見你的笑启妹, 到底真...
    玖富煥閱讀 366評論 1 2