1、NSTimer 定時(shí)器,這個(gè)在我們?nèi)粘5拈_發(fā)過程中都是經(jīng)常使用的,下面我們就來回顧一下我們?nèi)粘J褂玫?NSTimer 吧。
2、定時(shí)器的寫法大家都會(huì)。如下:
我們先簡(jiǎn)單了解一下這兩句代碼,timerWithTimeInterval: 也就是我們選擇要去執(zhí)行的時(shí)間,這里是 1.0秒之后。才會(huì)去執(zhí)行 timerRun:這個(gè)方法。userInfo: 自然接的是需要傳遞的數(shù)據(jù),repeats:設(shè)置定制器需要需要重復(fù)去執(zhí)行 timerRun 方法。
但是我現(xiàn)在就 【圖1】我們看下。看下這個(gè)方法 我們是講 NSTimer 添加到 NSRunLoop 中,此時(shí)添加的 主線程的runLoop。 如果當(dāng)前為主線程的話,[NSRunLoop mainRunLoop] 也可以使用 [NSRunLoop currentRunLoop]。我們現(xiàn)在看下 后面會(huì)接一個(gè) Mode:。其實(shí)runLoop 的Mode 有3個(gè)。
那么這三個(gè) Mode 有什么區(qū)別呢。我們來看下。首先 ①、NSDefaultRunLoopMode: 這個(gè)是默認(rèn)的。他的特點(diǎn)是優(yōu)先級(jí)在 UI之后。當(dāng)UI Mode 在使用的時(shí)候,是不會(huì)去執(zhí)行定時(shí)器的,只有的 UI Mode 閑置的時(shí)候才會(huì)執(zhí)行NSTimer。②、UITrackingRunLoopMode:這個(gè)的 Track的。特點(diǎn)是只有在UI Track的時(shí)候 才會(huì)去執(zhí)行 NSTimer。UI 不動(dòng)就不執(zhí)行。
看到上面這兩個(gè)的介紹,我們?cè)谝郧伴_發(fā)的過程中都會(huì)遇到一個(gè)問題,就是去做一個(gè)View的動(dòng)畫的時(shí)候,在頁面滑動(dòng)的時(shí)候 動(dòng)畫就會(huì)暫停。相信大家都遇見過。這種情況一般可能就是使用了 默認(rèn)的runLoop Mode。我們?nèi)绻胍还茼撁婊瑒?dòng)還是不滑動(dòng)的時(shí)候 NSTimer 不間斷。那可以使用 :
NSDefaultRunLoopMode,UITrackingRunLoopMode 兩個(gè)Mode 同時(shí)使用,蘋果為了方便大家,于是有已第三個(gè)Mode NSRunLoopCommonModes。這個(gè)Mode 特點(diǎn)就不做介紹了,肯定就是上面兩個(gè)Mode共同的特點(diǎn)。