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