1

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

4

2 回答 2

4

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

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

编辑:状态序列化可以通过按下模拟的“home”键在模拟器中发生。⌘⇧H

于 2014-02-18T19:57:09.550 回答
0

通常,模拟器开始表现得很有趣,解决大多数问题的方法就是重置它。

在模拟器中,单击“iOS 模拟器菜单”>“其余内容和设置...”

我这样做我认为每天至少一次,当键盘停止响应或者我突然收到有趣的消息时。

于 2014-02-18T19:45:39.777 回答