RunLoop 是 iOS 和 macOS 开发中非常核心的基础组件,它本质上是一个处理事件的循环(Event Loop)。 简单来说,RunLoop 的目的就是:让线程在有工作的时候忙碌,没有工作的时候休眠(省电/省资源)。 以下是关于 RunLoop 的基本作用和模式(Mode)的详细解析: --- 一、 RunLoop 的基本作用 RunLoop 主要有以下四个核心作用: 1. 保持线程存活 (Keep Alive) 如果没有 RunLoop,线程执行完入口函数(如 函数或线程的 block)后就会立即退出。 RunLoop 启动后,会进入一个 循环,使线程一直处于“运行-休眠-运行”的状态,从而保证 App 不会一启动就退出(主线程),或者后台线程能持续等待任务。 2. 处理各种事件 (Event Processing) RunLoop 负责监听和分发各种事件,包括: 用户交互事件:点击、滑动、屏幕刷新(CADisplayLink)。 系统事件:定时器(NSTimer)、网络请求回调、GCD 的 Main Queue 分发。 Selector 调用: 系列方法。 3. 节...