【发布时间】:2013-07-05 20:48:46
【问题描述】:
一个相对简单的问题,我无法找到明确的答案。我的应用比较复杂,但回答这个问题就足够了。
假设您正在编写一个秒表应用程序。当用户点击“开始”时,应用会将当前日期和时间存储在 startTime 中:
startTime = [NSDate date];
当用户录制“stop”时,应用程序将当前日期和时间存储在 stopTime 中:
stopTime = [NSDate date];
持续时间通过以下方式计算:
duration = [stopTime timeIntervalSinceDate:startTime];
并显示如下:
[durationLabel setText:[NSString stringWithFormat:@"%1.2f", duration]];
我的应用程序计时的典型持续时间范围为 2 到 50 秒。我需要精确到 1/100 秒(例如 2.86 秒)。
我假设 iOS 设备使用某些协议来保持其时钟准确(蜂窝或 NTP 源?)。我担心的是,在启动和停止秒表之间,iOS 设备上的时钟会更新,这可能会导致当前日期/时间向前或向后移动。如果发生这种情况,计算的持续时间将不准确。
为了提高代码效率,我看到了一些与计时方法相关的帖子。有些人建议使用我不熟悉的 mach_time.h 函数。对我来说,使用哪种方法最好并不明显。
是否可以禁止 iOS 更新日期和时间? mach_absolute_time() 不受 iOS 时钟更新的影响吗?
非常感谢!
提姆
【问题讨论】: