ios - ios同步倒数定时器,带有 `NSTimeInterval`,不跳过秒 ( 可能是由于舍入)?

  显示原文与译文双语对照的内容

我想知道是否有一个清洁的方法,用大中央调度( 然后在 UILabel 中显示例如) 同步到系统时钟。"。 基于引用日期? —所以如果我的参考日期是 20分钟的NSDate,那么我会在秒的( 不用担心格式化) 中显示一个倒计时。

只要快速版本的这个过程会跳过几秒钟,以防更新方法调用没有到达计划。

这似乎是一个非常基本的问题,所以我想要一个基本的/清除解决方案,除了增加更新间隔。

此外,解决方案不应使用 NSTimer

时间: 原作者:

我将使用类似这样的递归方法:


- (void) updateTimer{



 NSDate *now = [NSDate date];


 NSTimeInterval secondsToDate = [now timeIntervalSinceDate:self.referenceDate];


 _timerLabel.text = [NSString stringWithFormat:@"%.0f", secondsToDate];



 if( secondsToDate <0 ){


 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{


 [self updateTimer];


 });


 }else{


 NSLog(@"Timer triggered!");


 }


}



你只需要第一次打电话,那么每秒钟就会更新倒计时。

...