1愿伴、NSTimer 定時(shí)器趟咆,這個(gè)在我們?nèi)粘5拈_(kāi)發(fā)過(guò)程中都是經(jīng)常使用的,下面我們就來(lái)回顧一下我們?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ū)別呢。我們來(lái)看下颊艳。首先 ①茅特、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è)谝郧伴_(kāi)發(fā)的過(guò)程中都會(huì)遇到一個(gè)問(wèn)題漾脂,就是去做一個(gè)View的動(dòng)畫的時(shí)候假颇,在頁(yè)面滑動(dòng)的時(shí)候 動(dòng)畫就會(huì)暫停。相信大家都遇見(jiàn)過(guò)符相。這種情況一般可能就是使用了 默認(rèn)的runLoop Mode拆融。我們?nèi)绻胍还茼?yè)面滑動(dòng)還是不滑動(dòng)的時(shí)候 NSTimer 不間斷。那可以使用 :
NSDefaultRunLoopMode啊终,UITrackingRunLoopMode 兩個(gè)Mode 同時(shí)使用镜豹,蘋果為了方便大家,于是有已第三個(gè)Mode NSRunLoopCommonModes蓝牲。這個(gè)Mode 特點(diǎn)就不做介紹了趟脂,肯定就是上面兩個(gè)Mode共同的特點(diǎn)。