NSInternalInconsistencyException 无法在包中加载 nib
Posted
技术标签:
【中文标题】NSInternalInconsistencyException 无法在包中加载 nib【英文标题】:NSInternalInconsistencyException Could not load nib in bundle 【发布时间】:2011-07-21 21:03:13 【问题描述】:我已经为子游戏创建了一个应用程序。
它为每一轮加载 12 个不同的问题。在第 4 轮之后,应用程序崩溃并显示以下日志:
ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/4B0202F9-5961-4AC7-A327-604620AF1F94/test.app/pi_ok.png'
error = 24 (Too many open files)
2011-03-24 02:26:34.743 [424:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/4B0202F9-5961-4AC7-A327-604620AF1F94/VisualMath.app> (loaded)' with name 'ThemePickerController''
*** Call stack at first throw:
(
0 CoreFoundation 0x3182464f __exceptionPreprocess + 114
1 libobjc.A.dylib 0x3651dc5d objc_exception_throw + 24
2 CoreFoundation 0x31824491 +[NSException raise:format:arguments:] + 68
3 CoreFoundation 0x318244cb +[NSException raise:format:] + 34
4 UIKit 0x330d2a53 -[UINib instantiateWithOwner:options:] + 1110
5 UIKit 0x330d3e09 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92
6 UIKit 0x3304d5e9 -[UIViewController _loadViewFromNibNamed:bundle:] + 36
7 UIKit 0x3301afa5 -[UIViewController loadView] + 80
8 UIKit 0x32effebf -[UIViewController view] + 30
9 VisualMath 0x00062875 -[DragTriangleViewController hideThemePicker] + 40
10 VisualMath 0x0005fe93 -[DragTriangleViewController clickDone] + 26
11 CoreFoundation 0x31794571 -[NSObject(NSObject) performSelector:withObject:withObject:] + 24
12 UIKit 0x32ee5ec9 -[UIApplication sendAction:to:from:forEvent:] + 84
13 UIKit 0x32ee5e69 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32
14 UIKit 0x32ee5e3b -[UIControl sendAction:to:forEvent:] + 38
15 UIKit 0x32ee5b8d -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 356
16 UIKit 0x32ee6423 -[UIControl touchesEnded:withEvent:] + 342
17 UIKit 0x32ee4bf5 -[UIWindow _sendTouchesForEvent:] + 368
18 UIKit 0x32ee456f -[UIWindow sendEvent:] + 262
19 UIKit 0x32ecd313 -[UIApplication sendEvent:] + 298
20 UIKit 0x32eccc53 _UIApplicationHandleEvent + 5090
21 GraphicsServices 0x32977e77 PurpleEventCallback + 666
22 CoreFoundation 0x317fba97 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
23 CoreFoundation 0x317fd83f __CFRunLoopDoSource1 + 166
24 CoreFoundation 0x317fe60d __CFRunLoopRun + 520
25 CoreFoundation 0x3178eec3 CFRunLoopRunSpecific + 230
26 CoreFoundation 0x3178edcb CFRunLoopRunInMode + 58
27 GraphicsServices 0x3297741f GSEventRunModal + 114
28 GraphicsServices 0x329774cb GSEventRun + 62
29 UIKit 0x32ef7d69 -[UIApplication _run] + 404
30 UIKit 0x32ef5807 UIApplicationMain + 670
31 VisualMath 0x00002207 main + 70
32 VisualMath 0x000021bc start + 40
)
我尝试了很多选项,但没有一个有效,请帮助我。
【问题讨论】:
不要在两天内两次发布相同的问题。重复您自己的问题***.com/questions/5402161/… 【参考方案1】:在项目中 -> 构建阶段
确保将 .xib 添加到复制捆绑资源中
【讨论】:
这正是发生在我身上的事情..我不知道我是怎么错过这个的,但是错误就是错误..感谢您的宝贵帮助..【参考方案2】:您似乎正在尝试实例化一个名为 ThemePickerController.nib 的 nib,但它不存在。笔尖是否包含在项目成员中?
【讨论】:
【参考方案3】:另一个常见的问题是试图在 viewControllers 的 init 方法中加载一个 nib。应该在 viewDidLoad 中。
【讨论】:
【参考方案4】:这很容易...选择 XIB 文件并确保在“目标成员”部分(在“显示文件检查器”选项卡下)下选中项目的所需目标,您的问题就解决了。
当您复制存在文件并手动添加到项目时通常会发生这种情况,因为在这种情况下您也应该手动检查上述目标。
【讨论】:
【参考方案5】:像这样设置你的按钮点击图像:
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"btn_twelve_month" ofType:@"png"];
[btn_twelve_month setImage:[UIImage imageWithContentsOfFile:path1] forState:UIControlStateNormal];
而不是这个:
[btn_twelve_month setImage:[UIImage imageNamed:@"btn_twelve_month.png"] forState:UIControlStateNormal];
有效..
【讨论】:
【参考方案6】:您可以重命名应在 AppDelegate 文件中更新的 ViewController,因此导航到 AppDelegate.m 并执行以下操作。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.viewController = [[XXXXViewController alloc] initWithNibName:@"XXXXXViewController" bundle:nil];
在那个 XXXX 中重命名你最新的 ViewController 名称(即重命名 ViewControllerName)。现在它可以工作了。
【讨论】:
【参考方案7】:Base Internationalization 有可能会导致崩溃并显示相同的错误消息,因为the feature is only supported in ios 5 and above!
但是,由于您可以启动应用程序并且它只是在一段时间后崩溃,这不应该是由于 Base Internationalization。
【讨论】:
以上是关于NSInternalInconsistencyException 无法在包中加载 nib的主要内容,如果未能解决你的问题,请参考以下文章