因“无法在包中加载NIB”而导致崩溃

5
在我的应用中有一个PointMode按钮。当我点击它10到11次时,没有问题,视图会出现。但是之后,它会产生以下错误:

终止应用程序,因为未捕获的异常'NSInternalInconsistencyException', 原因:无法在捆绑包中加载NIB:'NSBundle <Simulator/4.1/Applications/04DF6214-383F-43DA-B2D2-C5B538B0095B/PW.app> (loaded)' 名称为'PWPointMode''

我像这样调用该视图。
PWPointMode *pointController = [[PWPointMode alloc]initWithNibName:@"PWPointMode" bundle:nil];
    self.objPointMode = pointController;
    [self.navigationController pushViewController:objPointMode animated:YES];
    [pointController release];

我的应用程序是通用应用程序


我添加了一个代码片段来调用(分配)那个视图... - Harin
3个回答

2

Harin

我向您展示的代码可以加载新视图或nib,但是在这里解释一下,在加载视图后10-15次,您的应用程序将显示此消息,因此您需要在性能工具中运行应用程序并检查由于泄漏而导致内存资源不会充分利用。由于这个问题,当应用程序崩溃时,您也会收到此错误消息。

也许这对您有用...


0

您可能输入了错误的 NIB 名称,请仔细检查。同时,请确认该文件已包含在应用程序束中,在“复制束资源”构建阶段。


他提到它可以正常工作10-11次,之后就会出现错误。因此,他没有输错xib名称的机会。 - Rahul Vyas
@Rahul,日志信息很明显,Harin可能会说任何事情。无论如何,感谢您的投票。 - user756245
@Harin,问题出在其他地方。你的代码完全正确,而且你也确认了nib名称。 - user756245
@Vince 在这种错误出现时有想法...它通常不会发生,但当我反复调用它时,它会导致崩溃。 - Harin
我理解了你的评论和代码,所以很明显问题出在别处。你提供的代码完全正确。 - user756245
显示剩余2条评论

-2

@Vince 是对的。防止拼写错误的最好方法是使用

NSStringFromClass([myVCIvar class]);

尝试在推送视图控制器之前自动释放它,因为当我遇到这个问题时,我会自动释放实例然后推送它,这样就可以解决问题了。

应该使用一个UIViewController。 - max_
@XcodeDev 他提到它可以工作10-11次,之后就会出现错误。因此,他没有输错xib名称的机会。 - Rahul Vyas
1
这只是对 Vince 观点的补充,因此 -1 是无关紧要的。此外,Vince 说你 '可能' 打错了,而不是真的打错了。 - max_
很可能是代码中或实际文件中的命名错误。顺便说一下,如果它确实与类名相同,您可以使用initWithNibName:nil自动使用当前类名。 - Peter DeWeese
@Peter DeWeese 我的应用是通用应用,那么我该如何区分xib呢? - Harin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接