小码哥iOS学习笔记第十七天: Runloop运行逻辑

  • RunLoopCFRunLoopModeRef中, 主要有如下几个成员变量
Source0
触摸事件处理
performSelector:onThread:

Source1
基于Port的线程间通讯
系统事件捕捉

Timers
NSTimer
performSelector:withObject:afterDelay:

Observers
用于监听RunLoop的状态
UI刷新(BeforeWaiting)
Autorelease pool(BeforeWaiting)
复制代码
  • RunLoop运行逻辑
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
复制代码
  • 图解RunLoop运行逻辑

  • RunLoop的休眠原理

相关文章
相关标签/搜索