【发布时间】:2012-11-07 11:45:41
【问题描述】:
我打开了一个旧的 iOS 项目,就像 2010 年的 iOS 3 一样旧,发现它在启动时崩溃了。例外是:
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'
我现在已经搞砸了这个项目几个小时,试图找出导致它的原因。我觉得我已经用尽了我的智慧和资源,没有从头开始重新做大部分应用程序。关于可能是什么原因的任何想法?
我的调查结果:
该项目是对 AppStore 中现有内容的全新 git checkout。是的,该应用程序非常简单,无需任何更新即可正常运行 2 年。
我更改为使其可编译是将基础 SDK 从 4.1(Xcode 中不再可用)更改为 iOS6 并点击运行。项目设置中Target还是3.0。
我检查了我没有在我的代码中的任何地方调用或实现 initWithCoder。我的代码中指示的行只是对 main.m 中 UIApplicationMain() 的调用,这对我没有多大帮助。
该应用只有 3 次浏览。主要、细节和关于。看起来 MainView 或 MainViewController 包含问题。我从应用程序没有崩溃的结论是: 1.选择在启动时不将其添加到 NavigationController。 2.选择添加 AboutController。
我怀疑问题出在 Xib 文件而不是控制器或视图代码上,因为我可以使用 AboutView Xib 初始化 MainViewController 并启动应用程序。
我想知道我是否可以“修复”这个 Xib,或者我是否必须创建一个新的并重新布局 GUI 元素?这是我唯一的出路,我害怕。该应用程序很简单,但重新布局主要(也是最密集的)视图仍然需要一些时间。此外,我更愿意知道问题出在哪里,而不是从头再来,也许有一天会再次陷入同样的境地。
我完全走在正确的轨道上吗?有没有办法追踪有问题的代码或 GUI 小部件?
提前感谢您的任何建议。
更新:在新的 Xib 中重新创建 UI 的基础知识并使用该应用程序后,该应用程序可以正常工作。仍然想知道我是否可以通过更改其中的某些设置来修复旧的。
【问题讨论】:
标签: objective-c xcode cocoa-touch