Я использую этот код для отслеживания последней перезагрузки:
+ (float) secondsSinceLastReboot{
return ((float)(mach_absolute_time())) * ((float)timebase.numer) / ((float)timebase.denom) / 1000000000.0f;
}
Я предположил, что mach_absolute_time () основывался на времени последней загрузки устройства, как на Mac. Кажется, это не основано на этом. Я на самом деле понятия не имею, на чем он основан.
Посмотрите на следующее поведение (сегодняшняя дата 2009-09-20):
lastRebootTime = [[NSDate date] addTimeInterval:-[self secondsSinceLastReboot]];
//last Reboot Time will contain : 2009-09-20 07:42:14 +0100
Я абсолютно уверен, что в то время я не перезагружал свое устройство. Мое устройство не загружалось в течение недели.
Кроме того, когда я отсоединяю свое устройство от кабеля и запускаю это приложение, кажется, что, когда устройство переходит в спящий режим, lastRebootTime начинает сдвигаться в будущем. Кажется, что mach_absolute_time не учитывает время сна. Или я ошибаюсь по этому поводу?
Мне бы очень хотелось получить временную метку от последней перезагрузки устройства. Есть идеи?