CFRunLoopSourceRef、CFRunLoopObserverRef

CFRunLoopSourceRef是事件源(輸入源)

現在分爲

source0:非基於Port的,用於用戶主動觸發的事件

source1:基於Port的,通過內核和其他線程相互發送消息 


CFRunLoopObserverRef是觀察者,能夠監聽RunLoop的狀態改變

可以監聽的時間點有以下幾個

/* Run Loop Observer Activities */
typedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
    kCFRunLoopEntry = (1UL << 0),             //即將進入RunLoop
    kCFRunLoopBeforeTimers = (1UL << 1),      //即將處理Timer
    kCFRunLoopBeforeSources = (1UL << 2),     //即將處理Source
    kCFRunLoopBeforeWaiting = (1UL << 5),     //即將進入休眠
    kCFRunLoopAfterWaiting = (1UL << 6),      //剛從休眠中喚醒
    kCFRunLoopExit = (1UL << 7),              //即將推出RunLoop
    kCFRunLoopAllActivities = 0x0FFFFFFFU
};

CFRunLoop的內存管理(Core Foundation)

 凡是帶有Create Copy 、Retain等字眼的函數、創建出來的對象都需要在最後做一次release

比如CFRunLoopObserverCreate

release函數:CFRelease(對象)



發佈了29 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章