本文主要梳理iOS RunLoop 核心知识
- 概念
- 数据结构
- 事件循环机制
- RunLoop与NSTimer
- RunLoop与多线程
概念
RunLoop是通过内部维护的事件循环来对 事件/消息 进行管理的一个对象。
事件循环的效果
1.没有消息需要处理时,休眠以避免资源占用。
2.有消息需要处理时,立刻被唤醒。
3.用户态/内核态 切换。
数据结构
事件循环机制
RunLoop与NSTimer
出现的场景 滑动tableview的时候定时器是否还会生效 : 不会
原因: UITrackingRunLoopMode kCFRunLoopDefaultMode
解决方案: void CFRunLoopAddTimer(runLoop,timer,commonMode)
RunLoop与多线程关系
1.通过数据结构了解:线程是和RunLoop一一对应的
2.自己创建的线程默认是没有RunLoop的
如何实现一个常驻线程
为当前线程开辟一个RunLoop 向该RunLoop中添加一个Port/Source 等维持RunLoop的事件循环 启动该RunLoop