1

由于某种原因,我在 UIKit 内部发生了崩溃;EXC_BAD_ACCESS 错误正在发生,例如 8 次调用深入到dismissModalViewController 调用中。我尝试为我的可执行文件启用 NSZombieEnabled,但无论僵尸是否打开,控制台日志都会打印相同的错误,而且我不知道是哪个对象导致了问题。我需要做些什么来让控制台打印正确的信息吗?

4

3 回答 3

1

在此处阅读有关使用 Zombies的信息。

在 gdb 中运行它。当您EXC_BAD_ACCESS查看堆栈时(使用 gdb 的 where 命令或运行 Xcode GUI 调试器)。如果您仍有问题,请在原始问题中发布堆栈。

此外,只有在您处理 NSObjects 时,僵尸才会对您有所帮助。如果您使用低级别的 malloc/free 例程,僵尸不会为这些分配购买任何东西。

于 2009-10-27T18:59:31.813 回答
1

上周末当 NSZombieEnabled 似乎根本不起作用时,我学到了一件事——确保你没有将非对象传递给某些代码。

就我而言,我将 NSString 作为“字符串”而不是 @“字符串”返回。这意味着我正在用 c-string 覆盖一个 NSString 对象。当我后来尝试在该对象中写入一个新值时,我得到了一个 BAD_ACCESS。NSZombie 忍不住 b/c 它不是我试图覆盖的对象,而是那个 c 字符串。

顺便说一句,在 XCode 中将所有警告视为错误——希望我能让它们在 IDE GUI 中以 RED 显示——它们有时很容易被忽略。

于 2009-10-28T20:31:08.313 回答
-1

听起来像是在您的模态视图控制器中过度释放了某些东西。首先注释掉新行,直到它停止中断。

于 2009-10-27T18:34:18.960 回答