iOS 10:致命异常:NSInternalInconsistencyException 无法在包中加载 NIB
Posted
技术标签:
【中文标题】iOS 10:致命异常:NSInternalInconsistencyException 无法在包中加载 NIB【英文标题】:iOS 10: Fatal Exception: NSInternalInconsistencyException Could not load NIB in bundle 【发布时间】:2017-01-05 10:05:53 【问题描述】:App store 应用程序出现崩溃报告,但以下情况除外:
`NSInternalInconsistencyException Could not load NIB in bundle...`
自过去两个月以来,ios 10 设备和多个 xib 文件都报告了此崩溃。
此类实例的详细信息:
Fatal Exception: NSInternalInconsistencyException
Could not load NIB in bundle: 'NSBundle </var/containers/Bundle/Application/XXX/MyApp.app> (loaded)' with name 'VideoView'`
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x18d7551b8 __exceptionPreprocess
1 libobjc.A.dylib 0x18c18c55c objc_exception_throw
2 CoreFoundation 0x18d755100 -[NSException initWithCoder:]
3 UIKit 0x193b04fcc -[UINib instantiateWithOwner:options:]
4 UIKit 0x193965e14 -[UIViewController _loadViewFromNibNamed:bundle:]
5 UIKit 0x193737980 -[UIViewController loadView]
6 UIKit 0x1936035bc -[UIViewController loadViewIfRequired]
7 UIKit 0x1936034ec -[UIViewController view]
8 MyApp 0x100135580 -[VideoEventController addMediaPlaybackViewForChannel:andProgram:ofType:] (VideoEventController.m:113)
用于初始化视图控制器的代码是:
self.videoViewCtrl = [[VideoViewController alloc] initWithNibName:@"VideoView" bundle:nil];
[mediaView addSubview:self.videoViewCtrl.view]; //Crash trace points to this line in code
清单:
-
对于特定的 xib,问题并不总是可重现,因此没有参考错误或 xib 名称中没有拼写错误
xib 文件存在于
Copy Bundle Resources
xib 文件链接到Target Membership
中的目标
xib 文件的位置设置为Related to Group
代码使用 AutoLayout 但不使用尺寸类。项目为 iPad 和 iPhone 提供了独立的 xib,遵循命名约定。
有人遇到过同样的问题吗? 加载 NIB 失败的原因可能是什么?
【问题讨论】:
加 1 用于执行清单。 同样的问题 【参考方案1】:经过几个月的调查,我们终于找出了导致问题的原因。
我们有一个与应用程序集成的静态库(内部),用于分析目的。我们发现,这个库正在泄漏为 i/o 操作获取的文件描述符。
发生的情况是,一旦应用程序用完 i/o 资源,下一个资源请求就会失败。在我们的例子中,它是 xib 初始化。此错误导致应用程序崩溃并出现异常:
`NSInternalInconsistencyException Could not load NIB in bundle.`
以下参考资料实际上帮助我们得出了这个结论。
-
On iOS 10, NSFetchedResultsController leaks 'open file descriptors'
socketpair failed 24 (too many open files)
我们对库的归零是:
-
我们从未在调试版本中观察到该问题,在生产中它始终可重现
调试构建和生产构建的主要区别之一是,分析库在调试中被禁用
我们可以在启用分析库的调试版本中重现该问题
我们已将我们的观察报告给图书馆开发团队并等待回复。
【讨论】:
我有同样的问题,我用的是面料...但我不明白如何解决它!【参考方案2】:我遇到了和你一样的错误
当您从这里的任何viewcontroller
推送到VideoEventController
时,您需要使用此代码。
VideoEventController *vc = [[VideoEventController alloc]initWithNibName:@"VideoEventController" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
【讨论】:
以上是关于iOS 10:致命异常:NSInternalInconsistencyException 无法在包中加载 NIB的主要内容,如果未能解决你的问题,请参考以下文章
尝试访问 TabBar 时 IOS swift 致命错误 nil 异常
到 phpmyadmin 的致命异常 AsyncTask 连接