我正在尝试找到有关在ios中测量时间的可靠解决方案。
我想以1秒的精度显示时间的流逝。完全像ios中内置的秒表一样,但是只有几秒钟。
到目前为止,我发现的每个解决方案似乎都很笨拙,因为它要么在NStimer的帮助下使用轮询
或一些C级爱的东西。
我的问题是,“我”每次都需要询问系统。但是,如果我要依靠不确定的NStimer,那么我的测量就非常不可靠。
是否没有从系统调用的委托方法来更新我的时间?
我想如果将轮询的分辨率提高到1 ns,那就可以了。但是我应该如何使用低级C来实现呢?

最佳答案

我不确定您的目标是什么。我不知道您是否想要一种查询高分辨率时间的好方法,还是想让系统给您回电。

如果是前者,这就是我使用的高分辨率计时器。

#import "mach/mach_time.h"

#define TICKS_TO_NANOS(_ticks_, _timebase_) (((_ticks_) * ((_timebase_).numer)) / ((_timebase_).denom))
#define NOW_IN_TICKS() (mach_absolute_time())
#define NOW_IN_NANOS(_timebase_) TICKS_TO_NANOS(NOW_IN_TICKS(), _timebase_)


如果是后者,则您将永远无法获得有保证的回调计时器。可能最一致的计时器回调将是挂接到CADisplayLink,但是如果您的图形方法花费的时间太长,则可能无法保持一致。

您可以尝试使用系统计时器,但是那里也无法保证。

关于objective-c - 在iOS中获取实时时钟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10306698/

10-09 03:23