- 我们的每一个App的本质都是使用
RunLoop
,在不断的监听事件,保证程序不退出. - 主线程的消息循环默认是开启的.
- 子线程的消息循环默认是关闭的,需要我们手动开启,只有我们自己手动关闭,才能保持线程执行完毕后,子线程自动销毁
- 作用:
- 它是一个死循环,它会不断的检查有没有事件,如果有事件他就处理,没有事件的话就休眠
-
RunLoop
在不处理事件的时候,它是休眠的. - 事件: 按钮点击,屏幕点击,屏幕滚动,定时器等...
-
RunLoop
的核心:- 核心1: 事件
- 输入源事件
- 定时源事件
- 核心2: 运行模式
*RunLoop
在同一时间只能且必须在一种特定的模式下运行- 如果要更换Mode,必须先停止当前的Loop,然后再重新启动Loop
- Mode是保证滚动流程的关键
-
NSDefaultRunLoopMode
: 默认状态,空闲状态 -
UITrackingRunLoopMode
: 滚动模式 -
UIInitializationRunLoopMode
: 私有的,App启动时 -
NSRunLoopCommonModes
: 默认包含1,2两种模式
- 核心1: 事件