RunLoop,循環(huán)運(yùn)行的意思,處理APP中的各種事件,讓程序保持運(yùn)行,這也就是我們應(yīng)用能夠一直保持運(yùn)行的原因啦。接下來我就說一下runloop在平時的編程中應(yīng)該怎么用才能提高程序的性能。
runloop的好處是,需要運(yùn)行的時候運(yùn)行,不需要運(yùn)行的時候就處于休息狀態(tài),節(jié)省了CPU的資源,這樣當(dāng)然就能提高程序的性能啦~~~
runloop的使用,runloop的創(chuàng)建是懶加載的形式創(chuàng)建,所以使用的時候可以這樣使用
[[NSRunLoop currentRunLoop] addTimer:(nonnull NSTimer *) forMode:(nonnull NSString *)];
如果當(dāng)前在主線程,還可以這樣使用
[[NSRunLoop mainRunLoop] addTimer:(nonnull NSTimer *) forMode:(nonnull NSString *)];
add的東西就是要添加的事件,mode是這個事件的運(yùn)行模式。
runloop的mode分兩種,一種是NSDefaultRunLoopMode,另一種是UITrackingRunLoopMode ,如果想同時兼具兩種模式NSRunLoopCommonModes
NSDefaultRunLoopMode:默認(rèn)的runloop模式,不需要觸發(fā)就執(zhí)行
UITrackingRunLoopMode:scrollview滾動的時候停止其他的模式,只運(yùn)行當(dāng)前的滾動模式,比如拖動tableview時,其他操作停止,只認(rèn)真的進(jìn)行拖動,可改善拖動時的卡頓情況
NSRunLoopCommonModes:以上兩種模式都有,也就是頁面滾動的時候該干嘛干嘛~
需要注意的是,一個runloop可以有多個模式,但是只能選擇一個模式進(jìn)行運(yùn)行,系統(tǒng)默認(rèn)的是NSDefaultRunLoopMode模式,如果進(jìn)行scrollview的滾動,系統(tǒng)自動切換到UITrackingRunLoopMode模式,停止?jié)L動后系統(tǒng)又恢復(fù)到默認(rèn)模式,進(jìn)行默認(rèn)模式的操作
后續(xù)還有runloop類的介紹,敬請期待~