一个相对简单的问题,我无法找到明确的答案。我的应用程序更复杂,但回答这个问题就足够了。
假设您正在编写一个秒表应用程序。当用户点击“开始”时,应用程序将当前日期和时间存储在 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 时钟更新的影响?
非常感谢!
蒂姆