如何从上次启动获取NSTimeInterval值

我需要从上次设备启动获取NSTimeInterval值。 我发现适合这个任务的CACurrentMediaTime(),但在我的应用程序中,我没有使用核心animation,我不认为这是包括这个框架只是为了得到这个function的最好方法。 有没有另一种方式,从上次开机更快捷的方式获得时间?

自上次系统重新启动以来的NSTimeInterval值可以通过以下基础对象和方法直接获取:

[[NSProcessInfo processInfo] systemUptime]

最快的低级方法是使用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)。

尝试一个C系统调用,时间(3)应该返回正常运行时间。

在MacOSX上,正常运行时间也会返回。 所以也有一个办法。