2

我有一个窗口和一个在用户单击按钮时打开的窗口控制器。有时我会得到 EXC_BAD_ACCESS(code=1, address=0x0)。

0x7fff6f2a59e0:  movq   (%rax), %rdi

这是代码:

    ChooseProceduresWindowController *chooseProceduresWindowController = [[ChooseProceduresWindowController alloc] initWithWindowNibName:@"ChooseProceduresWindow"];
    [NSApp runModalForWindow:[chooseProceduresWindowController window]];

出现错误,然后调用 runModalForWindow:。我不是每次都收到这个错误,但我找不到模式。

谢谢

4

2 回答 2

3

调试错误的最佳方法EXC_BAD_ACCESS是使用NSZombies.

查看此视频以获取说明:

http://youtu.be/LQtPr8bkB3g

NSZombie当您尝试释放已释放的对象时,将所有对象保留在内存中,这样您就更接近于找到您的错误。正如@Mark H 所说,这是一个内存管理问题。

您也可以NSLog在您的 dealloc 方法中添加一个,以便更好地了解在运行时释放的内容。

于 2014-01-13T14:18:23.760 回答
1

当对象在内存中不存在时,将引发该错误。我会开始寻找内存管理问题。首先是确保在使用后释放 ChooseProceduresWindowController。

于 2012-06-16T15:34:04.850 回答