曙海教學優勢
本課程面向企事業項目實際需要,秉承二十一年積累的教學品質,RunLoop基礎培訓以項目實現為導向,老師將會與您分享設計的全流程以及工具的綜合使用技巧、經驗。線上/線下/上門皆可,RunLoop基礎培訓專家,課程可定制,熱線:4008699035。
大批企業和曙海
建立了良好的合作關系,合作企業30萬+。曙海的課程培養了大批受企業歡迎的工程師。曙海的課程在業內有著響亮的知名度。
一:什么是RunLoop
?? (1)從字面意思看,運行循環、跑圈。
?? (2)保持程序持續運行,處理App中的各類事件包括觸摸事件、定時器事件、Selector事件。
?? (3)節省CPU資源,提高程序的性能,該做事的時候做事,該休息的時候休息。
? ?
二:RunLoop與線程
?? ?
?? (1)每條線程都有唯一的一個與之對應的RunLoop對象。
?? (2)主線程的RunLoop已經自動創建好了,子線程的RunLoop需要主動創建。
?? (3)RunLoop在第一次獲取時創建,在線程結束時候銷毀。
三:RunLoop相關類
?? Core Foundation中關于RunLoop的5個類
?? 1:CFRunLoopRef
?? 2:CFRunLoopModeRef? ,CFRunLoopModeRef代表RunLoop的運行模式,一個RunLoop包含若干個運行模式,即一個RunLoop包含若干個Mode,每個Mode又包含若干個Source/Timer/Observer,每次RunLoop啟動時,只能指定其中一個Mode,這個Mode被稱作CurrentMode,如果需要切換Mode,只能退出Loop,再重新指定一個Mode進入。系統默認注冊了5個Mode:
?? (1)kCFRunLoopDefaultMode:App的默認的Mode,通常線程是在這個Mode下運行
?? (2)UITrackingRunLoopMode:界面跟蹤Mode,用于ScrollView追蹤觸摸滑動,保證界面滑動時不受其它Mode影響
?? (3)UIInitializationRunLoopMode:在剛啟動App時進入的第一個Mode,啟動完成后就不再使用
?? (4)GSEventReceiveRunLoopMode:接收系統事件的內部Mode,通常用不到。
?? (5)kCFRunLoopCommonMode:這是一種占位用的Mode,不是一種真正的Mode。
?? 3:CFRunLoopTimerRef
?? (1)CFRunLoopTimerRef是基于時間的觸發器。
?? (2)基本上說的就是NSTimer,它會受到runloop的Mode的影響。
?? (3)GCD的定時器不受RunLoop的mode的影響。