当从背景出来时,iPhone应用程序随机崩溃

时间:2011-02-21 09:36:35

标签: cocoa-touch ios4 multitasking

我有一个iPhone应用程序,在非常罕见的情况下会立即从多任务处理的背景中崩溃。没有代码正在运行 - 应用程序将立即在我的main.m文件中的这一行崩溃:

int retVal = UIApplicationMain(argc, argv, nil, nil);

Xcode告诉我,“程序收到信号:”EXC_BAD_ACCESS“。”

有谁知道为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

如果没有更多信息,很难说出这里发生了什么。

当您尝试访问某些无效内存时,会发生EXC_BAD_ACCESS。这通常是因为过度释放或保留不足的物体。

使用Cocoa Memory Management指南刷新您的想法,并在CocoaDev上查看这些页面

http://www.cocoadev.com/index.pl?DebuggingTechniques

http://www.cocoadev.com/index.pl?NSZombieEnabled

你会发现很多技巧可以帮助你找到像EXC_BAD_ACCESS这样的东西。

NSZombileEnabled文章还包含一个非常好的.gdbinit文件模板,它将设置一个全局断点的加载,并在运行GDB时设置一些环境变量。我发现它非常有用。

因此,当你有这些断点并且NSZombieEnabled设置为YES时,你将看不到EXC_BAD_ACCESS,而是你会得到一个断点,通常会发生错误的访问,并且会发出一条“发送”的日志消息解除分配的实例“或类似的东西。这应该确定你哪里出错了。

答案 1 :(得分:0)

好。很抱歉浪费了每个人的时间,但我做了一些挖掘并意识到我错过了一个重要的电话。我忘记在具有CLLocationManager的视图控制器中调用以下内容。

- (void)dealloc 
{
    myLocationManager.delegate = nil;
    [myLocationManager release];

    [super dealloc];
}

感谢你的帮助,Jasarien。