最後のデバイス起動からNSTimeInterval値を取得する必要があります。このタスクに適したCACurrentMediaTime()を見つけましたが、私のアプリではCore Animationを使用しておらず、この関数を取得するためだけにこのフレームワークを含めるのが最善の方法ではないと思います。前回の起動から秒単位で時間を取得する別の方法はありますか?
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 では、uptime もそのように返します。だから、それも方法がなければなりません。
于 2011-05-09T13:52:08.473 に答える