Runloop的原理和核心机制
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程。RunLoop就是控制线程生命周期并接收事件进行处理的机制。 RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统。 Foundation: NSRunLoopCore Foundation: CFRunLoop 核心部分,代码开源,C 语言编写,跨平台 目的 通过RunLoop机制实现省电,流畅,响应速度快,用户体验好 理解 进程是一家工厂,线程是一个流水线,Run Loop就是流水线上的主管;当工厂接到商家的订单分配给这个流水线时,Run Loop就启动这个流水线,让流水线动起来,生产产品;当产品生产完毕时,Run Loop就会暂时停下流水线,节约资源。RunLoop管理流水线,流水线才不会因为无所事事被工厂销毁;而不需要流水线时,就会辞退RunLoop这个 主管,即退出线程,把所有资源释放。 RunLoop并不是iOS平台的专属概念,在任何平台的多线程编程中,为控制线程的生命周期,接收处理异步消息都需要类似RunLoop的循环机制实现,Android的Looper就是类似的机制。 特性 主线程的RunLoop在应用启动的时候就会自动创建 其他线程则需要在该线程下自己启动 不能自己创建RunLoop