我有 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];
});
}
答案 0 :(得分:1)
首先,如果您想在5秒后开始动作,然后创建第一个定时器,该定时器在5秒延迟后触发,然后使第一个定时器无效并以countDown为5启动第二个定时器。这意味着在5秒延迟后您将完成选择器调用并处理其中的操作。我给你代码第二个计时器如何工作。我希望你知道如何处理第一个计时器,延迟5秒。
创建2个变量
var timerCount = 5
var timer : Timer!
创建1秒间隔的计时器
timer = Timer.scheduledTimer(timeInterval: 1, target:self, selector: #selector(self.startTimer), userInfo: nil, repeats: true)
在选择器方法中写入反向检查,如
func startTimer() {
if timerCount > 0 {
label.text = String(timerCount--)
}
else {
timer.invalidate()
}
}