RunLoop的数据结构
04.pngCFRunLoop
image.png- pthread:代表的是线程,RunLoop与线程的关系是一一对应的
- currentMode:是一个CFRunLoopMode这样一个数据结构
- modes:是一个包含CFRunLoopMode类型的集合(NSMutableSet<CFRunLoopMode*>)
- commonModes:是一个包含NSString类型的集合(NSMutableSet<NSString*>)
- commonModeItems:也是一个集合,在这个集合中包含多个元素,其中包括多个
Observer
,多个Timer
,多个Source
CFRunLoopMode
image.png- name:名称,例如NSDefaultRunLoopMode,所以说是通过这样一个名称来切换对应的模式,例如在上面的commonModes里面都是名称字符串,也就是说通过这些名称来支持多种模式
- source0:集合类型的数据结构
- source1:集合类型的数据结构
- obsevers:数组类型的数据结构
- timers:数组类型的数据结构
CFRunLoopSource
11.pngCFRunLoopTimer
12.pngCFRunLoopObserver
13.png- kCFRunLoopEntry:RunLoop的入口时机,RunLoop将要启动的时候的回调通知
- kCFRunLoopBeforeTimers:RunLoop将要处理Timer事件的时候
- kCFRunLoopBeforeSources:RunLoop将要处理Source事件的时候
- kCFRunLoopBeforeWaiting:RunLoop将要进入休眠的时候,将要进行用户态到内核态的切换
- kCFRunLoopAfterWaiting:RunLoop将要进入唤醒的时候,内核态到用户态的切换后不久
- kCFRunLoopExit:RunLoop退出的时候
网友评论