我需要从上次设备启动中获取 NSTimeInterval 值。我发现 CACurrentMediaTime() 适合这项任务,但在我的应用程序中我没有使用核心动画,我认为这不是包含这个框架只是为了获得这个功能的最佳方式。有没有另一种方法可以更优雅地从上次启动以秒为单位获取时间?
问问题
4488 次
3 回答
19
自上次系统重启以来的NSTimeInterval值可以通过以下 Foundation 对象和方法更直接地获取:
[[NSProcessInfo processInfo] systemUptime]
于 2013-07-16T04:34:02.283 回答
1
最快的低级方法是使用 mach_absolute_time() 从处理器读取系统正常运行时间
#include <mach/mach_time.h>
int systemUptime()
{
static float timebase_ratio;
if (timebase_ratio == 0) {
mach_timebase_info_data_t s_timebase_info;
(void) mach_timebase_info(&s_timebase_info);
timebase_ratio = (float)s_timebase_info.numer / s_timebase_info.denom;
}
return (int)(timebase_ratio * mach_absolute_time() / 1000000000);
}
请注意,处理器的 timebase_ratio 是不同的。例如,在 macbook 上它等于 1,而在 iPhone 5 上它等于 125/3 (~40)。
于 2013-12-13T12:59:53.077 回答
-1
尝试 C 系统调用,times(3) 应该返回正常运行时间。
在 MacOSX 上,正常运行时间也返回此类。所以也必须有一种方法。
于 2011-05-09T13:52:08.473 回答