У моего приложения есть таймер, который, когда приложение идет в фоновом режиме, приостанавливается.
Чтобы еще в нужное время, когда приложение возвращается на первый план, я установил NSDate
под названием exitDate
в AppDelegate
следующим образом:Установить NSDate, когда приложение идет в фоновом режиме, сохранить и восстановить его с восстановлением состояния
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.exitDate = [[NSDate alloc] init];
}
и NSDate
под названием reentryDate
следующим образом:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
self.reentryDate = [[NSDate alloc] init];
}
Затем я получаю разницу как NSDate
s, так и добавляю их к моему таймеру.
Это все работает нормально, пока приложение не завершено в фоновом режиме.
Если оно прекращается, приложение начинается с сначалаviewController
и таймер остановился.
Чтобы устранить эту проблему, я использую восстановление состояния. Что тоже отлично работает.
Даже если приложение будет прекращено, приложение начнет работу с последнимviewController
со всем, что я сохранил заранее.
Единственное, что, похоже, не сохраняется в состоянии восстановления, это мой exitDate
, хотя я явно просил это сделать.
Когда приложение возвращается, exitDate
всегда равно нулю.
Я предполагаю, что это что-то делать с временем exitDate
получает набор, который, вероятно, является после метода следующим образом называется:
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.exitDate forKey:@"UnsavedExitDateAppDelegate"];
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
self.exitDate = [coder decodeObjectForKey:@"UnsavedExitDateAppDelegate"];
}
как проблема я попытался установить exitDate
в -applicationWillTerminate
, -applicationDidEnterBackground
и -applicationWillResignActive
но каждый раз, когда приложение начинает резервное копирование, exitDate
- это нуль.
Любые идеи?
Привет, это похоже на трюк ... – Chris
Кроме того, я идиот, мой первоначальный метод работает. У меня просто была опечатка в моем decodeObjectForKey. Спасибо вам, ребята! – Chris