RunLoop 的本质是一个事件处理循环,用于不停地调度工作以及处理输入事件。它本质上是一个 do-while 循环,当有任务时开始执行,没有任务时进入休眠状态,不占用 CPU 资源。
RunLoop 的底层结构是一个结构体,具体为 struct __CFRunLoop,它包含多个模式(Mode),每个模式又包含多个事件源(Source0/Source1)、定时器(Timer)和观察者(Observer)。
RunLoop 的主要作用包括:
- 保持程序持续运行:程序启动后,主线程的 RunLoop 自动开启,确保程序持续运行。
- 处理应用中的各种事件:RunLoop 负责处理来自系统和应用的事件,如触摸事件、定时器事件等。
- 节省 CPU 资源:RunLoop 在没有任务时进入休眠状态,不占用 CPU 资源,提高程序性能。
总之,RunLoop 是 iOS 中用于管理线程和处理事件的核心机制,确保程序的持续运行和高效处理事件。