Я использую этот код для отслеживания последней перезагрузки:
+ (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 не учитывает время сна. Или я ошибаюсь?
Мне бы очень хотелось получить временную метку, когда устройство перезагрузилось. Любая идея?