当runModalForWindow时,EXC_BAD_ACCESS(code = 1,address = 0x0)

时间:2012-06-16 15:22:20

标签: objective-c macos exc-bad-access

我有一个窗口和一个窗口控制器,当用户单击按钮时会打开它。 有时我得到EXC_BAD_ACCESS(代码= 1,地址= 0x0)。

0x7fff6f2a59e0:  movq   (%rax), %rdi

以下是代码:

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

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

由于

2 个答案:

答案 0 :(得分:3)

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

观看此视频以获取解释:

http://youtu.be/LQtPr8bkB3g

当您尝试释放已释放的对象时,

NSZombie会将所有对象保留在内存中,因此您可以更接近找到错误。正如@Mark H所说,这是一个内存管理问题。

此外,您可以在dealloc方法中放置NSLog,以便更好地了解在运行时取消分配的内容。

答案 1 :(得分:1)

当内存中不存在该对象时,将抛出该错误。我开始寻找内存管理问题。第一个是确保在使用后释放ChooseProceduresWindowController。