4

为什么我在运行 iPhone 应用程序时仍然收到此错误?该文件是我一直在努力删除和替换的 ViewController,但它不会死。据我所知,我的项目中没有对这个文件的任何引用(字符串或其他)。

  • 我已经删除了相关文件(我正在尝试摆脱它。)
  • 我已经清理了项目并重建了。
  • 我的模拟器中有“重置内容和设置”。
  • 我已经完成了一个 grep (grep -i -r "TheClassName" *) 并且除了我的 UserInterfaceState.xcuserstate 文件之外没有任何匹配项。
  • 我已经使用 XCode 的 Find/Replace 选项卡搜索了代码。
  • 我已经仔细检查了我的构建阶段,并且很确定它不在那里(它是一个大项目)。

还有其他想法吗?我花了太多时间试图弄清楚这个简单的事情。我肯定错过了什么。

谢谢!

4

6 回答 6

6

检查您的 nibs 或故事板,并确保您的所有视图都未设置为类!

于 2013-04-09T21:39:29.097 回答
6

经过近 2 天的时间在多台机器上尝试后,我终于解决了这个问题!我不会受挫!

我将问题追溯到对 UINavigationController 上的 setViewControllers 的调用,该调用在应用程序初始化时被调用。我总是被传递 3 个对象(导航控制器中有 3 个窗格)。即使我删除了第三个对象,如前所述,总是会传入三个对象。前两个的类类型是正确的,但第三个只是一个 UIViewController。奇怪的是,这个视图控制器有一个 nibName,它对应于我之前删除的目标文件和 Xib 文件。当然,当在这个无聊的 UIViewController 上调用视图时,它会崩溃,因为相应的 nib 显然已被删除。请记住,使用 grep 在我的目录中找不到此对象或 Xib 的文本名称,

所以,我认为应用程序可能没有被正确清理。我仔细检查了这个。我什至验证了我的工作区设置是正确的(文件->项目设置->高级)。该应用程序确实每次都重新编译。

其次,我开始想,也许这个对象是通过其他方式设置的。向后工作,我添加了一些断点,并发现在父 UINavigationController 上调用了 initWithCoder——这最终正在调用对象上的 setViewControllers 并分配三个视图控制器(其中一个是有问题的)。我可以很容易地从调用堆栈中看到正在加载的 Nib 文件正在反序列化一些令人反感的东西。

所以,我开始深入研究我的 Xib 文件。当然,对象名称不在文件中(正如预期的那样,因为 grep 没有找到任何东西)。我删除并重新创建了包含我的根 UINavigationController 的 Xib 部分。这最终改变了 Xib 文件中的 Object ID 和 ref。其次,我创建了一个新的 Xib 和 UIViewController,与我之前删除的名称相同,希望 Xcode 如果我创建然后重新删除它们会很高兴。然后我编译,重新删除它们,再次由 Xib 文件更新,用 grep 重新验证是的,确实,这个名字不存在任何东西。

它奏效了。在这个问题上花了几天时间之后,我相当确定界面生成器中存在一个错误,但我是否想重新审视这个问题来提交错误报告?绝对不...

于 2013-04-10T13:54:24.150 回答
2

就我而言,我通过名称解决了一个问题,Custom class name of View而不是Custom class of ViewController. 我错误地添加了这样的视图,如下所示。

在此处输入图像描述

它应该是这样的 ViewController 。

在此处输入图像描述

这是我的情况,因为您可能与另一个组件有关。

于 2014-01-23T12:51:15.630 回答
2

当视图类在框架中时会发生这种情况。选择框架的模块。CocoaPod 示例:HSegmentControl。

图像中的示例是 Cocoapod HSegmentControl

于 2017-06-15T02:20:03.803 回答
0

确保在添加、重命名或移动文件时,尤其是在文件夹中,添加它们时:

A. 创建组,而不是他们通常不会读入的引用。

B. 选中要添加源的适当“产品或目标”框。

于 2018-10-02T21:15:02.680 回答
0

另一件事要尝试:

我必须在“自定义类”的“模块”控件下切换“从目标继承”。

于 2020-09-02T15:45:09.037 回答