【问题标题】:SIGABRT on iPhone when changing xib更改 xib 时 iPhone 上的 SIGABRT
【发布时间】:2009-09-26 10:11:52
【问题描述】:

我刚刚完成了一个适用于 iPhone 的应用程序,直到今天,它在 iPhone 模拟器和实际设备上运行良好。

我尝试更改在我的应用程序委托类的 applicationDidFinishLaunching 方法中加载的 xib - 我所做的只是更改 initWithNibName 中的字符串。

当我在模拟器上启动应用程序时,会显示 Default.png 图像,然后应用程序会因未捕获的异常而崩溃。在设备上运行时,Default.png 图像显示约 10 秒,UI 从未加载,我得到“GDB:程序接收信号:“SIGABRT”。在 Xcode 状态栏上。调试表明,在应用崩溃之前,实际上从未达到 applicationDidFinishLaunching。

将起始 xib 设置回原始版本可以解决问题,但现在我已经进行了更改并将其保存在 Interface Builder 中,并且应用程序显示与上述相同的问题 - 我根本没有进行任何代码更改。

这是内存问题,还是常见错误的已知问题?

注意:我没有对任何代码进行任何更改,我对 xib 所做的唯一更改是装饰性的,IBOutlets 都完好无损。

【问题讨论】:

    标签: iphone objective-c xcode crash xib


    【解决方案1】:

    您可能在代码中更改了 IBOutlet 的名称,而没有在 xib 中更改它。

    【讨论】:

    • 我已经检查了主 xib 中的两个 IBOutlet,连接看起来很好,就像以前一样 - 请注意,我在崩溃之前从未到达 applicationDidFinishLaunching,所以 xib 没有实际加载,对吗?
    • 不清楚你说的是从UIApplicationMain加载的主笔尖还是从代码加载的另一个笔尖。
    • 我说的是从应用程序委托中的 applicationDidFinishLaunching 方法加载的 nib。但是,在应用崩溃之前,调试器中永远不会调用该方法。
    • 当然,不执行的代码是不会崩溃的。仔细检查来自UIApplicationMain 的自动加载的笔尖。
    【解决方案2】:

    对不起伙计们,我的错 - 看来我删除了 MainWindow.xib 文件,所以在我进行更改后启动时没有调用委托。我重新创建了它并将其链接到应用程序委托和 UIApplication,所以现在一切正常。

    【讨论】:

      【解决方案3】:

      您可能已将 IBOutlets 从 xib 连接回您的代码,但这些连接已断开。

      您必须向我们提供更多关于如何更改 nibname 字符串的详细信息。您是否重命名了您的 xib 文件?

      【讨论】:

      • 我所做的更改纯粹是装饰性的,主要是看看我是否可以在不更改任何代码的情况下重新创建问题 - 我认为问题不在代码中,因为应用程序昨晚运行良好,同样代码。我所做的只是更改标签的颜色并将 xib 保存在相同的名称下。
      【解决方案4】:

      我重命名了一些类和 Xib,并将 SIGABRT 放入 main.m

      Identity Inspector 中的类名可能指向不存在的类名

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2012-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-27
          • 2011-05-25
          • 1970-01-01
          • 2011-07-13
          • 2011-12-04
          相关资源
          最近更新 更多