1.CFRunLoopModeRef特征代表RunLoop對象內的運行模式(每個RunLoop對象內存中存在很多種運行模式,每個Mode運行模式下必然包含若干個有效的Source0/Source1/Timer/Observer數據序組)
2.RunLoop對象活躍(操作)啟動時能且僅能選擇某個Mode匹配currentMode(暗示Loop對象的操作運行必然是處于模態下,假設如果不存在模態則Loop對象無法實現操作(如果Loop對象需要切換Mode模態(由原Mode模態Origin切換為目標Mode模態Destination)(Loop對象只能先退出原Mode模態Origin先環路退出操作再重新選擇目標Mode模態進入操作)。
3.不同數據序組的Source0/Source1/Timer/Observer彼此之間并行互不影響
4.如Loop對象內全部Mode模態對象里面都沒有任何有效的Source0/Source1/Timer/Observer數據序組,RunLoop對象會立馬退出(消退不活動/Loop對象仍然存在)
5.特定時刻點Loop對象能且僅能在某種單模態下運行,對渲染性能存在好處,增加渲染的流暢性(如項目當前處于滑動模態下則不考慮非滑動的模式,此時資源使用的重心在渲染即此時優先處理渲染的問題所以順暢很多)。Loop對象內不同模態之間的切換是在dowhile循環體里面切換的不會導致程序退出。
6.Loop對象內存在很多的Mode模態對象(重點分析的模態對象)
KCFRunLoopDefaultMode (NSDefaultRunLoopMode):App應用程序涉及的默認Mode模態對象(通常主線程依賴默認Mode模態對象)
UITrackingRunLoopMode:界面追蹤Mode模態對象,用于定向追蹤處理ScrollView觸摸滑動信號,保證界面滑動時可避開其他Mode模態對象的影響。