我的應用程序有一個計時器,當應用程序在後臺進入暫停。
仍然有正確的時間,當應用程序回來在前臺,我設置一個NSDate
在AppDelegate
稱爲exitDate
如下:設置應用程序在後臺進行NSDate,保存並恢復狀態恢復
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.exitDate = [[NSDate alloc] init];
}
,並呼籲reentryDate
一個NSDate
如下:
- (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"];
}
問題是我已經試過在-applicationWillTerminate
,-applicationDidEnterBackground
和-applicationWillResignActive
設置exitDate
但每次當應用程序啓動時,exitDate
是零。
任何想法?
乾杯,這似乎是伎倆...... – Chris
另外,我是一個白癡,我的初始方法也適用。我在我的decodeObjectForKey中有一個錯字。感謝你們! – Chris