【发布时间】:2013-08-26 07:48:15
【问题描述】:
我需要在应用程序终止时存储应用程序的状态,以便当用户重新运行应用程序时,应用程序从上次关闭的状态运行。这是某种恢复应用程序,但是当应用程序意外关闭时会调用恢复方法。但是每次用户意外关闭时我都需要恢复应用程序手动关闭它。 我只需要存储 App UI 而不是应用程序的数据。 任何想法都会对我有所帮助。 谢谢
【问题讨论】:
标签: objective-c cocoa persistent nswindowrestoration
我需要在应用程序终止时存储应用程序的状态,以便当用户重新运行应用程序时,应用程序从上次关闭的状态运行。这是某种恢复应用程序,但是当应用程序意外关闭时会调用恢复方法。但是每次用户意外关闭时我都需要恢复应用程序手动关闭它。 我只需要存储 App UI 而不是应用程序的数据。 任何想法都会对我有所帮助。 谢谢
【问题讨论】:
标签: objective-c cocoa persistent nswindowrestoration
您可以使用任何可用的方法保持状态,例如:
我。 NSUserDefaults
例子:
//saving
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"testBool"];
//retrieving
[defaults boolForKey:@"testBool"];
二。序列化状态对象。
三。保存为 plist 文件
例子:
NSMutableDictionary *stateDictionary = [NSMutableDictionary dictionary];
//set state
...
//saving
[stateDictionary writeToFile:<filePath> atomically:YES];
//retrieve
stateDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:<filePath>]
四。使用 sqlite 或 Core-Data
(很可能不需要,除非 您的应用程序的状态处于某种对象关系模型中)
更新:
为了保留窗口的 UI 状态,
检查此link 并在用户界面保留标题下。
【讨论】:
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
//saveData
return NSTerminateNow;
}
如果要保存 NSWindow 位置,可以使用[window saveFrameUsingName:@"myWindow"];
并使用[window setFrameAutosaveName:@"myWindow"];@应用启动。
【讨论】: