1.什么是RunLoop?
RunLoop是通过内部维护的事件循环来对事件、消息进行管理的一个对象
没有消息需要处理时,休眠以避免资源占用 (用户态 变成 内核态(进程))
有消息需要处理时,离开被唤醒 (内核态 变成 用户态)
2.RunLoop的数据结构
NSRunLoop(foundation)是CFRunLoop(corefoundation)的封装,提供了面向对象的API:
CFRunLoop CFRunLoopMode Source/Timer/Observer
pthread:一一对应(RunLoop和线程的关系)
currentMode:CFRunLoopMode
modes:NSMutableSet<CFRunLoopMode>
commonModes:NSMutableSet<NSString*>
commonModeItems:Observer(多个) Timer(多个) Source(多个)
name:NSDefaultRunLoopMode (对应commonModes)
sources0 和 sources1 (NSMuableSet)
observers 和 timers(NSMutableArray)
3.RunLoop与NSTimer
常驻线程: