解决UITableView上计时器(Timer)的滑动问题

     要想计时器(Timer)不因UITableView的滑动而停止工作,就得探讨一下RunLoop了。

     RunLoop本质和它的意思一样是运行着的循环,更确切的说是线程中的循环。它用来接受循环中的事件和安排线程工作,并在没有工作时,让线程进入睡眠状态。

     所以根据RunLoop的定义,当Timer被滑动过了,误以为没有工作,让它进入睡眠状态了。怎样来避免这种情况呢?我们可以先来了解RunLoop的几种模式。RunLoop有Default模式、Connection模式、Modal模式、Event tracking模式和Common模式(具体模式的含义在http://www.cnblogs.com/fmdxiangdui/p/6164350.html介绍)。在Cocoa应用程序中,默认情况下Common Modes包含default modes,modal modes,event Tracking modes.可使用CFRunLoopAddCommonMode方法想Common Modes中添加自定义modes。因此,我们需要把计时器的RunLoop的Mode调整为Common模式。具体的操作如下:

1 NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
2         //将定时器添加到runloop中
3 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes ];
4 [[NSRunLoop currentRunLoop] run];

 

 
posted on 2016-12-12 14:17 相而勿绝 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/fmdxiangdui/p/6164320.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值