iOS 10:致命异常:NSInternalInconsistencyException 无法在包中加载 NIB
iOS 10: Fatal Exception: NSInternalInconsistencyException Could not load NIB in bundle
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 但不使用大小 类。项目有单独的 xibs iPad 和 iPhone 遵守命名约定。
有人遇到同样的问题吗?
NIB加载失败可能是什么原因?
我和你的错误一样
当您从任何 viewcontroller
推送到 VideoEventController
时,您需要使用此代码。
VideoEventController *vc = [[VideoEventController alloc]initWithNibName:@"VideoEventController" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
经过数月的调查,我们终于找出了导致问题的原因。
我们有一个静态库(内部)与应用程序集成用于分析目的。我们发现,这个库正在泄漏为 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)
我们如何关注图书馆:
- 我们从未在调试版本中观察到该问题,而在生产中它始终可重现
- 调试版本和生产版本的主要区别之一是,分析库在调试中被禁用
- 我们可以在启用分析库的调试版本中重现该问题
我们已将我们的观察结果报告给图书馆开发团队并等待回复。
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 但不使用大小 类。项目有单独的 xibs iPad 和 iPhone 遵守命名约定。
有人遇到同样的问题吗? NIB加载失败可能是什么原因?
我和你的错误一样
当您从任何 viewcontroller
推送到 VideoEventController
时,您需要使用此代码。
VideoEventController *vc = [[VideoEventController alloc]initWithNibName:@"VideoEventController" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
经过数月的调查,我们终于找出了导致问题的原因。
我们有一个静态库(内部)与应用程序集成用于分析目的。我们发现,这个库正在泄漏为 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)
我们如何关注图书馆:
- 我们从未在调试版本中观察到该问题,而在生产中它始终可重现
- 调试版本和生产版本的主要区别之一是,分析库在调试中被禁用
- 我们可以在启用分析库的调试版本中重现该问题
我们已将我们的观察结果报告给图书馆开发团队并等待回复。