应用程序加载前UINib initWithNibName崩溃

时间:2015-04-14 03:54:59

标签: ios xcode swift uikit

我有一个在模拟器上运行良好的iOS应用程序,但在所有设备上崩溃并出现此错误:

<Warning>: *** Assertion failure in -[UINib initWithNibName:directory:bundle:], /SourceCache/UIKit/UIKit-3318.16.14/UINib.m:98
Apr 13 23:24:52 Feifan-Zhous-iPad splashboardd[14537]
<Error>: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: (name != nil) && ([name length] > 0)'

该应用程序位于Swift中,在Xcode 6.1.1上运行。这里的设备是一台运行iOS 8.1的iPad Mini 4,4(但崩溃发生在包括iPhone在内的所有设备上,从iOS 7.0开始)。

值得注意的是崩溃发生在应用程序启动之前(application:didFinishLaunchingWithOptions:永远不会被调用)并且Xcode中的异常断点没有捕获任何内容。

该应用使用Main.storyboard文件作为主界面文件。在Copy Bundle Resources阶段,它是红色。该应用并未在任何地方使用initWithNibName:directory:bundle

是否有人遇到此错误并找到修复程序?很少有工作

3 个答案:

答案 0 :(得分:0)

  

我有一个在模拟器上运行良好的iOS应用程序,但在所有设备上崩溃

看起来它必须是文件名大写的东西。我想您已经在Mac上安装了不区分大小写的文件系统,因此模拟器将名称“File”视为“文件”(甚至是“FILE”),而iOS设备具有区分大小写的文件系统,因此文件名区分大小写。

我认为您为初始视图控制器设置了错误的类名,但无法实例化。

答案 1 :(得分:0)

您可能正在initWithNibName:directory:bundle中初始化一个nib名称,该名称从未被调用过。

将初始化代码从initWithNibName:directory:bundle移动到awakeFromNib。

答案 2 :(得分:0)

我遇到了同样的问题,如果您使用错误的文件/引用名称注册nib文件,请检查rootViewController/InitialView。如果我在进行网络通话时在UICollectionViewCells注册了viewDidLoad,那么就不会显示崩溃的位置。