解決UITableView上計(jì)時(shí)器(Timer)的滑動(dòng)問(wèn)題

要想計(jì)時(shí)器(Timer)不因UITableView的滑動(dòng)而停止工作,就得探討一下RunLoop了。

 RunLoop本質(zhì)和它的意思一樣是運(yùn)行著的循環(huán),更確切的說(shuō)是線程中的循環(huán)。它用來(lái)接受循環(huán)中的事件和安排線程工作,并在沒(méi)有工作時(shí),讓線程進(jìn)入睡眠狀態(tài)。

 所以根據(jù)RunLoop的定義,當(dāng)Timer被滑動(dòng)過(guò)了,誤以為沒(méi)有工作,讓它進(jìn)入睡眠狀態(tài)了。怎樣來(lái)避免這種情況呢?我們可以先來(lái)了解RunLoop的幾種模式。RunLoop有Default模式、Connection模式、Modal模式、Event tracking模式和Common模式(具體模式的含義在[http://www.cnblogs.com/fmdxiangdui/p/6164350.html](http://www.cnblogs.com/fmdxiangdui/p/6164350.html "模式含義詳解")介紹)。在Cocoa應(yīng)用程序中,默認(rèn)情況下Common Modes包含default modes,modal modes,event Tracking modes.可使用CFRunLoopAddCommonMode方法想Common Modes中添加自定義modes。因此,我們需要把計(jì)時(shí)器的RunLoop的Mode調(diào)整為Common模式。具體的操作如下:

1 NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(timerAction) userInfo:nil repeats:YES];

2 //將定時(shí)器添加到runloop中

3 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes ];

4 [[NSRunLoop currentRunLoop] run];

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 定時(shí)器的用法 系統(tǒng)提供了8個(gè)創(chuàng)建方法,6個(gè)類創(chuàng)建方法,2個(gè)實(shí)例初始化方法。有三個(gè)方法直接將timer添加到...
    gpylove閱讀 1,886評(píng)論 1 3
  • 基本概念 進(jìn)程 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,而且每個(gè)進(jìn)程之間是獨(dú)立的,它們都運(yùn)行在其專用且受保護(hù)的內(nèi)存...
    小楓123閱讀 1,001評(píng)論 0 1
  • 技術(shù)遷移:http://blog.csdn.net/iosbird/article/details/7636004...
    笑啥風(fēng)云閱讀 985評(píng)論 0 0
  • NSTimer 是系統(tǒng)提供的定時(shí)器,系統(tǒng)提供的api也比較簡(jiǎn)單,使用很方便,項(xiàng)目開(kāi)發(fā)中會(huì)經(jīng)常用到。然而,在使用NS...
    戀空K閱讀 4,150評(píng)論 0 13
  • 一、什么是NSRunLoop NSRunLoop是消息機(jī)制的處理模式 NSRunLoop的作用在于有事情做的時(shí)候使...
    KK_boy閱讀 545評(píng)論 0 0

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