iPhone開發應用中關於CFRunLoop學習

來源:互聯網
上載者:User

iPhone開發應用中關於CFRunLoop學習是本文要介紹的內容,CFRunLoop 對象監控任務task)的輸入源,並在它們為處理做好準備的時候調度控制。輸入源範例可能包括使用者輸入裝置、網路連結、定期或時間延遲事件,還有非同步回調。有3類對象可以被run loop監控:sources、timers、observers。

當這些對象需要處理的時候,為了接收回調,首先必須通過 CFRunLoopAddSource ,CFRunLoopAddTimer , or CFRunLoopAddObserver 把這些對象放入run loop。 要停止接收它的回調,你也可以稍候通過CFRunLoopRemoveSource從run loop中移除某個對象。

run loop有不同的運行模式,每種模式都有其自身的對象集,run loop監控,同時在該模式下運行。 Core Foundation定義了一種預設模式kCFRunLoopDefaultMode 來持有對象,在應用或線程閑置的時候這些對象應該被監控。當一個對象被添加到不認識的模式時,額外模式自動建立。每個run loop有它自己獨立的模式集。

Core Foundation還定義了一個特殊的偽模式kCFRunLoopCommonModes 來持有應當被“common”模式集共用的對象。 通過調用CFRunLoopAddCommonMode 來添加一個模式到“common”模式集。 預設模式kCFRunLoopDefaultMode  總是common模式集中的一個成員。kCFRunLoopCommonModes  常數決不會傳給CFRunLoopRunInMode 。每個run loop有它自己獨立的common模式集。

每個線程恰好有一個run loop,既不可以建立,也不能銷毀線程的run loop。,Core Foundation 根據需要為你建立。通過CFRunLoopGetMain  你可以獲得當前線程的run loop。調用lCFRunLoopRun  來使當前線程的run loop以預設模式運行起 來,直到調用CFRunLoopStop 來停止run loop。你也可以調用CFRunLoopRunInMode 來使當前線程的run loop以指定模式運行起來一段時間或者直到run loop被停止。 run loop只能在請求模式至少有一個source或者timer可監控的情況下運行起來。

run loop可以遞迴運行,你可以在任何run loop 標註內部調用CFRunLoopRun  或 CFRunLoopRunInMode ,還可以建立嵌套run loop,並在當前線程調用棧啟用,在標註內並沒有限制在那種模式可以運行。 你可以建立另一個run loop,啟用運行在任何可行的run loop模式,包括任何已經運行在呼叫堆疊中的更高的模式。

Cocoa 和 Carbon 每個都是建立在 CFRunLoop上來實現它們自己更進階別的事件迴圈。當編寫一個  Cocoa 或者 Carbon 應用,你可以添加你的sources、timer和observers到它們的run loop對象中。你的對象將會作為常規應用事件迴圈的一部分來得到監控。使用 NSRunLoop 執行個體方法 getCFRunLoop  來獲得對應應於cocoa run loop的CFRunLoop,在carbon應用中使用 GetCFRunLoopFromEventLoop  函數.

小結:iPhone開發應用中關於CFRunLoop學習的內容介紹完了,希望本文對你有所協助!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.