- 在
RunLoop
的CFRunLoopModeRef
中, 主要有如下几个成员变量
Source0
触摸事件处理
performSelector:onThread:
Source1
基于Port的线程间通讯
系统事件捕捉
Timers
NSTimer
performSelector:withObject:afterDelay:
Observers
用于监听RunLoop的状态
UI刷新(BeforeWaiting)
Autorelease pool(BeforeWaiting)
复制代码
0一、通知Observers:进入Loop
0二、通知Observers:即将处理Timers
0三、通知Observers:即将处理Sources
0四、处理Blocks
0五、处理Source0(可能会再次处理Blocks)
0六、若是存在Source1,就跳转到第8步
0七、通知Observers:开始休眠(等待消息唤醒)
0八、通知Observers:结束休眠(被某个消息唤醒)
01> 处理Timer
02> 处理GCD Async To Main Queue
03> 处理Source1
0九、处理Blocks
十、根据前面的执行结果,决定如何操做
01> 回到第02步
02> 退出Loop
十一、通知Observers:退出Loop
复制代码