RunLoop
2018-08-17 本文已影响0人
59c4116645d0
什么是RunLoop?
RunLoop是通过内部维护的事件循环来对事件/消息进行管理的对象。
NSRunLoop是CFRunLoop的封装,提供了面向对象的API。
CFRunLoop数据结构:
CFRunLoopSource:
source0 :需要手动唤醒线程
source1 :具备唤醒线程的能力
CFRunLoopTimer:
CFRunLoopObserver:
检测时间点:1 kCFRunLoopEntry
2 kCFRunLoopBeforeTimers
3 kCFRunLoopBeforeSources
4 kCFRunLoopBeforeWaiting
5 kCFRunLoopAfterWaiting
6 kCFRunLoopExit
各个数据结构之间的关系
怎样把timer添加到多个model中去?
NSRunLoopCommonModes
·CommonMode不是实际存在的一种Model
·是同步Source/Timer/Observer到多个Mode中的一个技术方案。
RunLoop事件循环机制
可以通过 CFRunLoopAddTimer(runLoop,timer,commonMode)来使定时器生效
怎样实现一个常驻线程?