网站开发技术现状,wap建站程序哪个好,郴州网站建设,广东省建设厅证书查询官网文章目录 iOS - Runloop的运行逻辑1. 苹果官方的Runloop执行图2. Mode里面的东西2.1 Source02.2 Source12.3 Timers2.4 Observers 3. 执行流程3.1 注意点 4. Runloop休眠 iOS - Runloop的运行逻辑
1. 苹果官方的Runloop执行图 2. Mode里面的东西
2.1 Source0
触摸事件处理pe… 文章目录 iOS - Runloop的运行逻辑1. 苹果官方的Runloop执行图2. Mode里面的东西2.1 Source02.2 Source12.3 Timers2.4 Observers 3. 执行流程3.1 注意点 4. Runloop休眠 iOS - Runloop的运行逻辑
1. 苹果官方的Runloop执行图 2. Mode里面的东西
2.1 Source0
触摸事件处理performSelector:onThread: 2.2 Source1
基于Port的线程间通信系统事件捕捉 系统事件捕捉从用户点击屏幕到应用处理触摸事件先是由Source1捕捉屏幕点击事件系统事件然后再包装成Source0处理触摸事件
2.3 Timers
NSTimerperformSelector:withObject:afterDelay:
2.4 Observers
用于监听RunLoop的状态UI刷新BeforeWaitingAutorelease poolBeforeWaiting
UI刷新和Autorelease pool清理自动释放对象都是在Runloop即将进入睡眠状态时触发kCFRunLoopBeforeWaiting
3. 执行流程 通知Observers进入Loop通知Observers即将处理Timers通知Observers即将处理Sources处理Blocks处理Source0可能会再次处理Blocks如果存在Source1就跳转到第8步通知Observers开始休眠等待消息唤醒通知Observers结束休眠被某个消息唤醒 处理Timer 处理GCD Async To Main Queue 处理Source1
处理Blocks根据前面的执行结果决定如何操作 回到第02步 退出Loop
通知Observers退出Loop
3.1 注意点
GCD很多东西不依赖于Runloop它们是分开的。但是GCD从子线程回到主线程的时候是依赖于Runloop的
dispatch_async(dispatch_get_main_queue(), ^{NSLog();
});4. Runloop休眠
Runloop休眠是通过系统内核API不同于while循环那种而是真正地进入休眠状态 oubijiexi