教你快速上手--NSTimer

最近算是跟定时器干上了,因为项目需求,我需要在不同的界面放置定时器倒计时,例如

1548736F-F62D-47DE-9968-9B33C158175F.png

感兴趣的可以去这里看另外一种情况如何优雅的实现 电商类促销倒计时(1天:12:时33:分)

废话不多说直接上代码

首先在需要定时器的地方创建定时器

以下代码我是在cell中的setModel方法里面创建的NSTimer,因为我需要拿到时间的数据来判断cell是不是需要创建定时器
每次给NSTimer复制前一定要把先前的定时器移除掉[self removeTimer]

       NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDownAction) userInfo:nil repeats:YES]; //启动倒计时后会每秒钟调用一次方法 countDownAction
       [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
        [self removeTimer];
        self.timer = timer;

实现定时器每秒的方法

-(void) countDownAction{
    //倒计时-1  
    self.second -= 1;//second是后台传来的时间
       //当倒计时到0时,做需要的操作
   if (self.second == 0){
       //隐藏显示时间的Label
        self.promotionTime.hidden = YES;
      //移除定时器
        [self removeTimer];
    }else{
        if (self.second<0) {
        self.promotionTime.hidden = YES;
        [self removeTimer];
        return;
        }
        // 赋值(每次定时器都会到这复制给timeLabel)
        self.promotionTime.text = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", self.second/3600, (self.second/60)%60, self.second%60];
    }
}

附上removeTimer方法

#pragma mark - 注销定时器
- (void)removeTimer
{
    [self.timer invalidate];
    self.timer = nil;
}

如果还不放心定时器销毁问题的小伙伴看这里

- (void)dealloc {
    [self removeTimer];
    self.timer = nil;
}

编码的路上与大家同行,记录点滴, 欢迎各位大牛的指正,本人会虚心受教,谢谢!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,283评论 4 61
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,404评论 0 1
  • 虞美人 柳 词/老财神 春风刚到新芽冒, 拂面芳心噪。 丝绦飘曳醉游人, 映入水中凝老幼心神。 稍稍柳会飘飞絮...
    老财神阅读 260评论 0 1
  • 平时比较喜欢逛豆瓣知乎,相对来说对于一些培训班也很清楚了解。前些天在这上面看到有家长想给孩子选择英语提高班,而且还...
    大胡子瑞瑞阅读 942评论 0 0