- 在
RunLoop
的CFRunLoopModeRef
中, 主要有如下幾個成員變量
Source0
觸摸事件處理
performSelector:onThread:
Source1
基於Port的線程間通訊
系統事件捕捉
Timers
NSTimer
performSelector:withObject:afterDelay:
Observers
用於監聽RunLoop的狀態
UI刷新(BeforeWaiting)
Autorelease pool(BeforeWaiting)
複製代碼
0一、通知Observers:進入Loop
0二、通知Observers:即將處理Timers
0三、通知Observers:即將處理Sources
0四、處理Blocks
0五、處理Source0(可能會再次處理Blocks)
0六、若是存在Source1,就跳轉到第8步
0七、通知Observers:開始休眠(等待消息喚醒)
0八、通知Observers:結束休眠(被某個消息喚醒)
01> 處理Timer
02> 處理GCD Async To Main Queue
03> 處理Source1
0九、處理Blocks
十、根據前面的執行結果,決定如何操做
01> 回到第02步
02> 退出Loop
十一、通知Observers:退出Loop
複製代碼