6

最後のデバイス起動からNSTimeInterval値を取得する必要があります。このタスクに適したCACurrentMediaTime()を見つけましたが、私のアプリではCore Animationを使用しておらず、この関数を取得するためだけにこのフレームワークを含めるのが最善の方法ではないと思います。前回の起動から秒単位で時間を取得する別の方法はありますか?

4

3 に答える 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 に答える