RunLoop

1. NSTimer 被UIScrollView暫停

當(dāng)界面同時(shí)存在有定時(shí)器和UIScrollView時(shí),比如:一個(gè)界面頂部是一個(gè)由定時(shí)器控制的無(wú)限輪播圖,下面是一個(gè)UIScrollView,這時(shí)你如果拖動(dòng)下面UIScrollView,定時(shí)器就會(huì)暫停,等UIScrollView的拖動(dòng)事件結(jié)束后定時(shí)器才會(huì)接著執(zhí)行。

當(dāng)你創(chuàng)建輸入源(Timer)的時(shí)候,需要將其分配給 runloop 中的一個(gè)或多個(gè)模式。改Timer只會(huì)在改特定模式下被觸發(fā)。

****下面的方法 timer 被添加到 NSDefaultRunLoopMode****

    timer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                             target:self
                                           selector:@selector(getNotificationNews)
                                           userInfo:nil
                                            repeats:YES];

****下面的方法 timer 被添加到 NSRunLoopCommonModes****

    timer = [NSTimer timerWithTimeInterval:10.0
                                    target:self
                                  selector:@selector(getNotificationNews)
                                  userInfo:nil
                                   repeats:YES];
    
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
  • NSDefaultRunLoopMode:將NSTimer添加到主線程N(yùn)SRunLoop的默認(rèn)模式下,只有主線程是默認(rèn)模式下才能執(zhí)行NSTimer(滾動(dòng)scrollView,RunLoop默認(rèn)進(jìn)入Tracking模式,所以NSTimer不會(huì)有效果)。
  • UITrackingRunLoopMode:將NSTimer添加到主線程N(yùn)SRunLoop的追蹤模式下,只有主線程是追蹤模式下才能執(zhí)行NSTimer。(例如滾動(dòng)scrollView的時(shí)候就會(huì)監(jiān)聽到計(jì)時(shí)器)
  • NSRunLoopCommonModes:Common是一個(gè)表示,它是將NSDefaultRunLoopMode 和 UITrackingRunLoopMode標(biāo)記為了Common
    所以,只要將 timer 添加到 Common 占位模式下,timer就可以在Default和UITrackingRunLoopMode模式下都能運(yùn)行

深入理解RunLoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • RunLoop 文章目錄 RunLoop簡(jiǎn)介 1.1 什么是RunLoop? 1.2 RunLoop和線程 1.3...
    May_d8f1閱讀 341評(píng)論 0 1
  • 文章目錄RunLoop簡(jiǎn)介1.1 什么是RunLoop? 1.2 RunLoop和線程1.3 默認(rèn)情況下主線程的R...
    lusen_b閱讀 452評(píng)論 0 2
  • runtime 和 runloop 作為一個(gè)程序員進(jìn)階是必須的,也是非常重要的, 在面試過程中是經(jīng)常會(huì)被問到的, ...
    made_China閱讀 1,269評(píng)論 0 7
  • ======================= 前言 RunLoop 是 iOS 和 OSX 開發(fā)中非?;A(chǔ)的一個(gè)...
    i憬銘閱讀 985評(píng)論 0 4
  • 你要知道的iOS多線程N(yùn)SThread、GCD、NSOperation、RunLoop都在這里 轉(zhuǎn)載請(qǐng)注明出處 h...
    WWWWDotPNG閱讀 3,355評(píng)論 1 15

友情鏈接更多精彩內(nèi)容