Runloop解析
什么是runloop?
Runloop是通过内部维护的事件循环来对事件/消息进行管理的一个对象
事件循环:没有消息需要处理时,休眠以避免资源占用
有消息处理时,立刻被唤醒
也就是在用户态和内核态相互转换
ps:runloop 保证循环不退出 负责监听事件,触摸 时钟timer 网络事件 如果没有事件 会让程序进入休眠状态
UI模式优先级最高默认模式
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
UI模式
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:UITrackingRunLoopMode];
混合占位模式
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];NSRunLoopCommonModes
commonMode不是实际存在的一种mode
是同步source/Timer/Observer到多个Mode的一种技术方案
#### 其实主线程和子线程 唯一的区别是 主线程多了一个UI线程 而且主线程 既要保证体验也要保证安全 UIKIT框架是线程不安全的 所以需要用runloop去保证他的安全

通过GCD创建出来的定时器 不受UI线程的干扰 依然能准确的执行 内部已经封装好了
本文是原创文章,完整转载请注明来自 MrXiao's Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果