iPhone 更改 xib 时出现 SIGABRT 错误

3
我刚刚完成了一个iPhone应用程序,直到今天在iPhone模拟器和实际设备上都可以运行良好。我尝试更改加载在应用程序代理类的applicationDidFinishLaunching方法中的xib文件 - 我所做的一切只是更改initWithNibName中的字符串。
当我在模拟器上启动应用程序时,会显示Default.png图像,然后应用程序崩溃并出现未捕获的异常。在设备上运行时,Default.png图像显示约10秒钟,界面从未加载,并且在Xcode状态栏上收到'GDB: Program received signal: "SIGABRT".'。调试显示应用程序在崩溃之前实际上从未达到applicationDidFinishLaunching。
将起始xib设置回原始状态解决了该问题,但现在我已经在Interface Builder中进行了更改并保存了它,应用程序显示与上述相同的问题 - 我完全没有进行任何代码更改。
这是内存问题还是常见错误的已知问题?请注意:我完全没有进行任何代码更改,我对xib所做的唯一更改是外观上的,所有IBOutlets均完好无损。
5个回答

2
您可能在代码中更改了IBOutlet的名称,但没有在xib中进行更改。

我已经检查了主xib中的两个IBOutlets,连接似乎没问题,就像之前一样 - 请注意,在崩溃之前我从未到达applicationDidFinishLaunching,因此xib实际上没有被加载,对吗? - Boz
你的意思不是很清楚,你是在说从UIApplicationMain加载的主要nib还是从代码中加载的另一个nib。 - Nikolai Ruhe
我在谈论从应用程序委托的applicationDidFinishLaunching方法加载的nib。然而,在应用程序崩溃之前,调试器永远不会到达该方法。 - Boz
当然,未执行的代码不会崩溃。请仔细检查从UIApplicationMain自动加载的nib文件。 - Nikolai Ruhe

1

抱歉各位,是我的错 - 看起来我删除了MainWindow.xib文件,所以在我进行更改后启动时没有调用委托。我已经重新创建并将其链接到应用程序委托和UIApplication,现在一切都正常工作。


0

你可能在xib中连接了IBOutlets到你的代码中,但这些连接已经断开了。

你需要告诉我们更多有关nibName字符串如何被改变的细节。你重命名了xib文件吗?


我所做的更改纯粹是为了美观,主要是为了看看是否可以在不更改任何代码的情况下重新创建问题 - 我认为问题不在代码中,因为昨晚使用相同的代码运行应用程序时一切都很好。我所做的只是更改标签的颜色并将xib保存在相同的名称下。 - Boz

0

这是因为在 initWithNibName 中你没有给出正确的 xib 名称,所以它会崩溃。


0

我重命名了一些类和Xib文件,导致在main.m中出现了SIGABRT错误。

身份检查器中的类名可能指向不存在的类名。


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