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