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(對象)