理解:
runloop是控制线程整个生命周期并接受事件进行处理的机制;是ios事件响应与任务处理最核心的机制,它贯穿整个ios系统
理解:进程是一家工厂,线程是一个流水线,Run Loop就是流水线上的主管;当工厂接到商家的订单分配给这个流水线时,Run Loop就启动这个流水线,让流水线动起来,生产产品;当产品生产完毕时,Run Loop就会暂时停下流水线,节约资源。
RunLoop管理流水线,流水线才不会因为无所事事被工厂销毁;而不需要流水线时,就会辞退RunLoop这个主管,即退出线程,把所有资源释放。
RunLoop并不是iOS平台的专属概念,在任何平台的多线程编程中,为控制线程的生命周期,接收处理异步消息都需要类似RunLoop的循环机制实现,Android的Looper就是类似的机制。
特性:
主线程的RunLoop在应用启动的时候就会自动创建
其他线程则需要在该线程下自己启动
不能自己创建RunLoop
RunLoop并不是线程安全的,所以需要避免在其他线程上调用当前线程的RunLoop
RunLoop负责管理autorelease pools
RunLoop负责处理消息事件,即输入源事件和计时器事件
2、RunLoop中的model
主要是用来指定事件在运行循环中的优先级的(一个几个模式之间是线性执行的,有先后顺序,但是项目中model是允许修改的,我们要向使不同模式之间的线程一块执行,只要修改两者的模式一样即可),分为:
NSDefaultRunLoopMode(kCFRunLoopDefaultMode):默认,空闲状态
UITrackingRunLoopMode:ScrollView滑动时
UIInitializationRunLoopMode:启动时
NSRunLoopCommonModes(kCFRunLoopCommonModes):Mode集合
苹果公开提供的Mode有两个:
NSDefaultRunLoopMode(kCFRunLoopDefaultMode)
NSRunLoopCommonModes(kCFRunLoopCommonModes)
网友评论