我在状态恢复的 iOS 模拟器中有一些奇怪的行为。我最近才意识到它只发生在模拟器中。我想知道我是否做错了什么。但我也想分享一下我的经验。
我在 Xcode 5.0.2 中创建了一个单屏项目。在我的应用程序委托中,我只添加了两种方法:
- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
NSLog(@"I am restore.");
return YES;
} // */
- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
NSLog(@"I am save.");
return YES;
} // */
没有其他变化。
在实际的 iPhone 上调试时,我得到了两条日志消息;启动时“我正在恢复”,按下主页按钮停止应用程序时“我正在保存”。如果我注释掉其中一个或两个,我不会收到任何日志消息。似乎您需要这两种方法才能工作。他们甚至不会在没有对方在场的情况下被叫到。
在 iOS 模拟器中调试时,(我不知道如何判断我在模拟器中使用的操作系统版本)我从来没有收到任何日志消息。如果两种方法都存在,并且只有两种方法都存在,我的日志中会显示“警告:无法创建正在进行的恢复标记文件”,但我仍然没有收到我所做的日志消息。因此,仅两者的存在就会引起警告,但地球上没有任何力量可以召唤它们。在模拟器中。我尝试在情节提要中添加恢复 ID,但它没有改变任何东西。
我意识到 Apple 建议在实际设备上运行,并且他们不保证在模拟器上会有类似的行为。但是我需要在某个地方放置一些设置才能在模拟器中恢复状态吗?有一次我让它工作了,我认为我的故事板更改破坏了它。但是对于这样一个最小的应用程序,我想知道是否有更基本的东西。