没有任何谷歌结果的隐秘警告[在模拟器中]

时间:2013-09-21 11:42:54

标签: iphone ios xcode ios7 state-restoration

我在iOS项目中收到此警告:(iOS7,XCode 5 GM)

  

警告:无法创建正在进行的恢复标记文件

我正在研究一个viewcontroller,当我在启动时收到此警告时,它会变黑。 删除应用程序并重新启动XCode有时似乎有所帮助。我两个都没有回来

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:
-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:

Update1:​​我在iPhone4s上测试过。结果相同。我的视图控制器上有警告和黑屏。

Update2:回答了我自己的黑屏问题。该警告在最新的iOS 7.0.x版本中消失了。

3 个答案:

答案 0 :(得分:3)

请确保将视图控制器设置为storyboard文件中的初始视图控制器。您将在属性检查器中找到此设置。

Attributes inspector of main scene in storyboard

<强>更新

听起来您可能没有向导航控制器本身添加恢复ID,而是可能在子视图控制器上设置了恢复ID。如果是这种情况,您应该将恢复ID添加到丢失的控制器。

The State Preservation and Restoration Guide

答案 1 :(得分:1)

我还没有找到为什么在控制台中打印此消息,但我认为这是iOS中的某种错误。使用最新的iOS 7更新,我不再“警告:无法创建正在进行的恢复标记文件”。

更有趣的部分是黑屏。 当你有一个普通的ViewController和一个TableView 时会发生这种情况。  我不得不在ViewController的view属性和基本视图之间创建两个出口(除了表视图有更多视图,这就是我必须使用通用视图控制器的原因)。每个ViewController都有一个自动连接,所以这真的很奇怪。我认为这又是某种iOS错误。

答案 2 :(得分:1)

添加

  

UIViewControllerRestoration

为我解决了。如果您点击协议参考,它会说:

// A class must implement this protocol if it is specified as the restoration class of a UIViewController.


@import UIKit;

@interface AppDelegate : UIResponder <UIApplicationDelegate, UIViewControllerRestoration>

@property (strong, nonatomic) UIWindow *window;

@end

在文档中写道:

  

恢复类实现UIViewControllerRestoration   协议并负责查找或创建指定的   恢复时的对象。以下是何时使用每个提示的一些提示:

     

1)如果始终从应用程序的主页加载视图控制器   故事板文件在启动时,不要分配恢复类。   相反,让您的应用委托代理找到对象或利用   UIKit支持隐式查找恢复的对象。

     

2)查看   未从主故事板文件加载的控制器   发射时间,指定一个恢复类。最简单的选择是   使每个视图控制器都有自己的恢复类。

到目前为止,我已经这样理解了。如果没有UIViewControllerRestoration协议,appDelegate就不是恢复类(1)。因此,警告将在应用程序启动时写入(恢复时间)。应用程序委托无法以某种方式找到需要分配给标记文件的对象。问题出在appDelegate中。当app delegate成为restorationClass时,它会跳过步骤1)并转到步骤2)。似乎appDelegate成为所有其他视图的主要restoreClass。以下方法:

+ (UIViewController*) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents
                                                            coder:(NSCoder *)coder {}

永远不会在我的应用程序中调用,修复工作没有警告或错误。

我想了解问题以及发生了什么。我希望这对您有所帮助,欢迎提出意见以澄清问题。 :)