当将应用程序部署到设备时,程序将在几个周期后退出,并出现以下错误:

Program received signal: "EXC_BAD_ACCESS".

程序在iPhone模拟器上运行没有任何问题,只要我一次执行一个指令,它也会调试和运行。一旦我让它再次运行,我将击中EXC_BAD_ACCESS信号。

在这种特殊情况下,它恰好是加速度计代码中的一个错误。它不会在模拟器中执行,这就是它不会抛出任何错误的原因。但是,它将在部署到设备后执行。

这个问题的大多数答案都处理一般的EXC_BAD_ACCESS错误,因此我将保留这个选项,作为可怕的坏访问错误的统称。

EXC_BAD_ACCESS通常是非法内存访问的结果。你可以在下面的答案中找到更多信息。

您以前遇到过EXC_BAD_ACCESS信号吗?您是如何处理它的?


当前回答

再补充一下

Lynda.com有一个很棒的DVD叫

iPhone SDK基本培训

第6章第3课是关于EXEC_BAD_ACCESS和使用僵尸的。

这对我来说是很好的理解,不仅是错误代码,而且我如何使用僵尸来获得更多关于释放对象的信息。

其他回答

在12 Pro Max上尝试分配140000xScreen高度的ScrollView空间时EXC_BAD_ACCESS错误。它的分配很好,直到达到140,000像素的宽度。;)

在过去的四个小时里,我一直在调试和重构代码来解决这个错误。上面的一篇文章让我发现了这个问题:

属性: startPoint = [[DataPoint alloc] init]; startPoint= [DataPointList objectAtIndex: 0]; . . . x = startPoint。X - 10;/ / EXC_BAD_ACCESS

房地产后: startPoint = [[DataPoint alloc] init]; startPoint = [[DataPointList objectAtIndex: 0] retain];

再见EXC_BAD_ACCESS

XCode 4及以上版本,它已经通过Instruments变得非常简单了。在仪器中运行僵尸。本教程很好地解释了它:调试exc_bad_access错误xcode工具

我知道之前有人问过这个问题,但是在读了这个帖子之后,我找到了XCode 4.2的解决方案: Product -> Edit Scheme -> Diagnostics Tab ->启用僵尸对象

帮助我找到一个消息被发送到一个释放对象。

我忘记在初始化方法中返回self…;)