CFRunLoopMode
RunLoop在同一時段只能且必須在一種特定Mode下Run
更換Mode時, 需要暫停當前的Loop,然后重啟新的Loop
NSDefalutRunLoopMode? ? ? 默認狀態.空閑狀態
UITrackingRunLoopMode? ? ?滑動ScrollView
NSRunLoopCommonModes? ? ?默認包括上面第一和第二
實例:添加timer給當前runloop時,如果選擇NSDefalutRunLoopMode模式,則滑動界面時,timer停止運行,不滑動時運行;如果選擇UITrackingRunLoopMode,則滑動時timer也能運行,不滑動時反而不運行。
如果是選擇NSRunLoopCommonModes時,包括前兩種情況,都運行。
CFRunLoopObserver
監聽runloop,不能使用傳統的kvo方式監聽runloop。
需要使用CF類添加runloop監聽,在btn點擊時喚醒runloop,點擊完runloop休眠。