【iOS 底层】主线程 & 主Runloop
Pre macOS:Catalina 10.15.7 Xcode:12.3 objc4:objc4-787.1 基本概念 CFRunloop CFRunLoop对象监视任务的输入源,并在它们准备好进行处理时分派控制。 运行循环可以监视三种类型的对象:CFRunLoopSource、CFRunLoopTimer和CFRunLoopObserver。 添加到运行循环中的每个源、计时器和观察者必须与一个或多个运行循环模式相关联。 Core Foundation定义了一种特殊的伪模式,称为common modes,它允许您将多个模式与给定的source、timer或observer关联起来。 每个线程只有一个运行循环。你既不创建也不销毁线程的运行循环。Core Foundation会根据需要自动为您创建它。 运行循环可以递归地运行。您可以在任何运行循环调用中调用CFRunLoopRun或CFRunLoopRunInMode,并在当前线程的调用堆栈上创建嵌套的运行循环激活。 Cocoa应用程序构建在CFRunLoop之上,实现它们自己的高级事件循环。在编写应用程序时,可以将源代码、计时器和观察者...