我在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建议在实际设备上运行,并且他们不保证模拟器上的类似行为。但是我是否需要设置一些设置才能在模拟器中进行状态恢复?有一次,我让它工作,我认为我的故事板改变已经打乱了它。但是有这样一个最小的应用程序,我想知道是否有更基本的东西。
答案 0 :(得分:4)
这不是错误。在为您的应用程序准备状态序列化时调用这些方法。状态序列化永远不会在模拟器中发生,因为应用程序不会被终止。
最终,这是模拟器和实际设备之间的许多差异之一。始终在设备上进行测试以确保实际功能。
编辑:按模拟的“主页”键可以在模拟器中进行状态序列化。 ⌘⇧H
答案 1 :(得分:0)
通常,模拟器开始表现得很有趣,解决大多数问题只是为了重置它。
在模拟器中,点击“iOS模拟器菜单”> '休息内容和设置......'
我这样做,我想每天至少一次,当键盘停止响应或者我发出有趣的消息时。