2

当我推送某个视图控制器时,然后弹出它,然后重复看似随机的次数,应用程序最终崩溃并出现错误 EXC_BAD_ACCESS。

这我每次都能可靠地复制。它主要发生在我第二次弹出视图控制器时,但有时可能是第三次或第四次。

所以我决定设置 NSZombieEnabled 来看看问题出在哪里。

但是启用此功能后,无法复制崩溃。所改变的只是我在我的活动可执行文件的配置中选中“NSZombieEnabled”旁边的框,并且该应用程序运行良好。

任何想法是什么原因造成的?

谢谢

4

1 回答 1

2

我在模拟器中使用 iPhone 应用程序时遇到了同样的问题。当我弹出一个特定的视图控制器时,它会抛出一个 EXC_BAD_ACCESS,但是一旦 NSZombieEnabled 打开,错误就消失了。

为了缩小范围,我注释掉了弹出视图控制器的 dealloc 中的所有版本,以防止应用程序崩溃,然后一次一个地取消注释它们,直到它再次崩溃,揭示了有问题的变量。

就我而言,实际上是变量的释放语句本身抛出了 EXC_BAD_ACCESS

除了不发布之外,我无法确切地告诉您如何从那里修复它。在调整和清理代码后,我能够让它正常工作,但是当我尝试回滚更改以再次获取错误并缩小精确修复范围时,我无法复制问题。我实际上在第一次回滚时就得到了它,但再也没有。也许有一些环境因素在起作用?

这不是一个确切的答案,但也许它会为某人指明正确的方向。

于 2011-02-04T06:50:21.613 回答