iOS状态恢复记录警告而不是在模拟器中运行

时间:2014-02-18 18:26:17

标签: ios objective-c xcode ios-simulator state-restoration

我在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建议在实际设备上运行,并且他们不保证模拟器上的类似行为。但是我是否需要设置一些设置才能在模拟器中进行状态恢复?有一次,我让它工作,我认为我的故事板改变已经打乱了它。但是有这样一个最小的应用程序,我想知道是否有更基本的东西。

2 个答案:

答案 0 :(得分:4)

这不是错误。在为您的应用程序准备状态序列化时调用这些方法。状态序列化永远不会在模拟器中发生,因为应用程序不会被终止。

最终,这是模拟器和实际设备之间的许多差异之一。始终在设备上进行测试以确保实际功能。

编辑:按模拟的“主页”键可以在模拟器中进行状态序列化。 ⌘⇧H

答案 1 :(得分:0)

通常,模拟器开始表现得很有趣,解决大多数问题只是为了重置它。

在模拟器中,点击“iOS模拟器菜单”> '休息内容和设置......'

我这样做,我想每天至少一次,当键盘停止响应或者我发出有趣的消息时。