CFRunloopObserver
CFRunloopObserver 定义
struct __CFRunloopObserver {
CFRuntimeBase _base;
pthread_mutex_t _lock;
CFRunLoopRef _runLoop;
CFIndex _rlCount;
CFOptionFlags _activities; /* immutable */
CFIndex _order; /* immutable */
CFRunLoopObserverCallBack _callout; /* immutable */
CFRunLoopObserverContext _context; /* immutable, except invalidation */
};
结论:
1. 一个 observer 只能观察一个 runloop
2. 一个 observer 可以观察多个 runloop 状态
CFRunloopObserver 功能
CFRunloopObserver 观察 runloop 的各种状态,并抛出回调。
runloop 有6种状态
- 即将进入 runloop
- 即将处理 timer
- 即将处理 source
- 即将进入睡眠
- 即将唤醒(X) (被唤醒但是还没开始处理事件)
- 即将退出 runloop(X)(runloop已经退出)
typedef CF_OPTIONS(CFOptionFlag