在Objective-C中为scheduledTimerWithTimeInterval反转NSTimer

时间:2017-10-21 13:42:21

标签: ios objective-c nstimer

我有 NSTimer 行动。但是我想第一次在5s之后调用 Action ,第二次调用4s并且.......

_timepast = 6;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleDelay) userInfo:nil repeats:YES];


-(void)handleDelay
{
   _timepast = _timepast - 1;
   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_timepast * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
      [self handleTimer];
   });
}

1 个答案:

答案 0 :(得分:1)

首先,如果您想在5秒后开始动作,然后创建第一个定时器,该定时器在5秒延迟后触发,然后使第一个定时器无效并以countDown为5启动第二个定时器。这意味着在5秒延迟后您将完成选择器调用并处理其中的操作。我给你代码第二个计时器如何工作。我希望你知道如何处理第一个计时器,延迟5秒。

  1. 创建2个变量

    var timerCount = 5

    var timer : Timer!

  2. 创建1秒间隔的计时器

    timer = Timer.scheduledTimer(timeInterval: 1, target:self, selector: #selector(self.startTimer), userInfo: nil, repeats: true)

  3. 在选择器方法中写入反向检查,如

    func startTimer() { if timerCount > 0 { label.text = String(timerCount--) } else { timer.invalidate() } }