美文网首页
教你快速上手--NSTimer

教你快速上手--NSTimer

作者: 姚姚先生 | 来源:发表于2017-04-27 11:34 被阅读26次

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

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;
}

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

相关文章

网友评论

      本文标题:教你快速上手--NSTimer

      本文链接:https://www.haomeiwen.com/subject/tgugzttx.html