5

我开始使用 NIB 文件处理视图,并决定将其从我的项目中删除,以便以编程方式构建它。在我的任何代码中都没有提到对 NIB 文件的假定调用,并且 .XIB 在任何应用程序目录中的任何地方都不存在。这是调试控制台向我抛出的确切错误。

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:      
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "GESplitMainViewController"
nib but the view outlet was not set.' 

我无法理解为什么 xcode 仍在尝试加载 NIB。

4

2 回答 2

11

首先,如果您将 nil 作为第一个参数传递,则默认实现在捆绑包中initWithNibName:bundle搜索与视图控制器的类具有相同名称的 nib,这就是您的应用程序尝试加载的原因。

它找到一个的事实可能是因为您曾经在项目中拥有的 .xib 仍然包含在模拟器正在运行的包中。Xcode 习惯于将已删除的资源留在模拟器包中,即使您从项目中删除它们也是如此。

如果您从模拟器中删除应用程序,清理您的 Xcode 项目并再次运行,它应该会停止尝试加载 nib。

尽管这是您的应用程序从 nib 加载的原因,但这并不是它崩溃的原因。崩溃是因为您使用的旧 .xib 没有连接到视图控制器的视图出口的视图。

于 2012-10-05T09:56:56.280 回答
0

如果您没有在应用程序的任何地方使用 nib 名称,请先删除应用程序,清理您的构建并对其进行测试,希望这可以解决您的问题..

于 2012-10-05T09:56:00.587 回答