应用程序在加载时崩溃,主要原因是在main.m文件中出现了错误。

13

我试图恢复一个我不小心删除的应用程序,通过组织者我成功地做到了,然而,现在当我尝试在模拟器或 iPhone 上运行它时,它会崩溃,并弹出一个错误在 main.m 文件中:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

错误发生在带有SIGABRT错误的文件的 "return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));" 部分。我正在使用带有ARC的Xcode 4.2进行测试,测试设备为ios 4.3和ios 5.0。该应用程序以前是正常工作的,实际上现在也在应用商店中。任何帮助都将有所帮助。

9个回答

8

如果你查看调试器,它可能会告诉你是什么导致了错误。这种情况以前发生在我身上过,可能是由于内存不足(屏幕上的项目太多)。无论如何,看一下目标调试器,找到造成错误的原因。


2
当我遇到这个问题时,我是从另一个项目中复制了一个工程,并没有重命名视图控制器。我将nib文件作为源代码打开,相应地重命名有问题的行,然后问题得到了解决。 - gonzobrains
视图控制器的名称在哪里?谢谢,我也复制了 @gonzobrains。 - Alberto Acuña

7
通常当我遇到类似的错误时,是因为在Interface Builder中有一个损坏的链接。也许你改变了IBOutlet的名称,忘记重新连接它了。

5

如果你正在使用故事板,请确保在代码中没有连接重复参考插座或不存在的参考插座。换句话说,如果你从视图控制器上的按钮拖动到你的代码中,然后该属性或方法发生任何更改,你可能会收到此错误。

enter image description here


这就是我的全部内容了!我更改了根视图控制器的类,但它没有原始类具有的某些出口。 - Troy

3
发生在我身上的事情是,在调试器中发现它提到了我为一个动作给出的名称,但是我在创建了视图控制器.h和.m之后就将其删除了。因此,由于某种原因,仍然存在具有不同名称的旧动作,所以我将我的代码复制并粘贴到一个新的程序中。当然,这是一个非常小的单视图应用程序,所以很容易解决。

1

这种情况发生在我身上,我所做的只是更改了我的图像视图的名称,然后稍后又将其更改回来。但是,我忘记在删除它之后断开其他名称的连接。不过,一旦我从界面构建器中断开它,它就可以正常工作。


1

遇到 LLDP 调试器崩溃的问题,我改成 GDB 后就行了。

我也曾遇到过这个问题,但只有一半的启动时间会出现。控制台中绝对没有错误信息,只是一个 SIGARBT 信号。我的 AppDelegate 没有进入 didFinishLaunchingWithOptions 方法。将调试器改回 GDB(编辑架构...>(信息标签)调试器> LLDB)解决了问题。


1

如果以下构建设置不存在,我以前见过这种情况发生。OTHER_LDFLAGS = -ObjC -all_load

这在目标的链接下。


1

不确定错误信息是什么 - 这会很有帮助。但是你是否导入了AppDelegate.h文件?


0
要解决这个问题,点击主storyboard即Interface Builder,选择文件检查器选项卡,然后取消勾选使用自动布局。 或者,如果您绝对需要自动布局,可以针对仅支持iOS 6.0+的设备并更改最小目标。 此问题是由于xcode版本和学习程序源之间的版本不匹配而导致的。

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