OC原理之RunLoop的运行逻辑

RunLoop四个主要主要组成

Source0

触摸事件处理、performSelector:onThread:

Source1

基于Port的线程间通信、系统事件的捕捉

Timers

NSTimer、performSelector:withObject:afterDelay

Observers

用于监听RunLoop的状态 UI刷新(BeforeWaiting) Autorelease pool(BeforeWaiting)

运行过程

1.通知Observers:进入Loop

2.通知Observers:即将处理Timers

3.通知Observers:即将处理Sources

4.处理Blocks

5.处理Sources0(可能会再次处理Blocks)

6.如果存在Source1,就跳转到第8步

7.通知Observers:开始休眠(等待消息唤醒)

8.通知Observers:结束休眠(被某个消息唤醒)

    处理Timer

    处理GCD Async To Main Queue

    处理Source1

9.处理Blocks

10.根据前面的执行结果,决定如果操作

    回到2步

    退出Loop

11.通知Observers: 退出Loop

原文地址:https://www.cnblogs.com/muzichenyu/p/14433198.html