添加
UIViewController 恢复
为我解决了。如果您单击协议参考,它会显示:
// 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 中。当应用程序委托成为 restoreClass 时,它会跳过第 1 步)并进入第 2 步)。似乎 appDelegate 成为所有其他视图的主要恢复类。以下方法:
+ (UIViewController*) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents
coder:(NSCoder *)coder {}
在我的应用程序中从未调用过,并且恢复工作不会出现警告或错误。
我想了解问题以及发生了什么。我希望这对您有所帮助,欢迎评论以澄清问题。:)