NSZombieEnabled不报告导致EXC_BAD_ACCESS错误的对象类型

时间:2009-10-27 18:32:44

标签: iphone objective-c cocoa uikit zombie-process

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

3 个答案:

答案 0 :(得分:1)

了解使用Zombies here

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

僵尸只会在你处理NSObjects时帮助你。如果你正在使用低级别的malloc / free例程,僵尸就不会为这些分配购买任何东西。

答案 1 :(得分:1)

我上周末学到的一件事就是NSZombieEnabled似乎根本没有工作 - 确保你没有将非对象传递给某些代码。

在我的情况下,我将NSString作为“string”而不是@“string”返回。这意味着我用c-string覆盖了一个NSString对象。当我后来尝试在该对象中写入一个新值时,我得到了一个BAD_ACCESS。 NSZombie无法帮助b / c它不是我试图覆盖的对象,而是那个c-string。

顺便说一句,将所有警告视为XCode中的错误 - 希望我可以在IDE GUI中将它们显示为RED - 有时它们很容易被遗漏。

答案 2 :(得分:-1)

听起来你的模态视图控制器中有些东西被过度释放了。首先评论新线,直到它停止破裂。