由核心数据关系引起的EXC_BAD_ACCESS?

时间:2011-12-08 00:37:51

标签: ios4 core-data ios5

我对Core Data有以下问题。

在包含名为Next的一对一关系的实体上,我使用此Next关系执行一些操作,以从一个实例转到下一个实例。这很好。

使用以下代码:

error=nil;
[context save:&error];
NSLog(@"Error:%@",error);

我在gdb下检查我的数据是否保存没有任何问题。

这是麻烦来临的时候。关闭模拟器后(使用Command-Q);当我重新启动应用程序时,我收到此错误(在gdb中): 程序接收信号:“EXC_BAD_ACCESS”。 尝试执行以下代码行时会发生这种情况:

item=[item valueForKey:@"Next"];

在某些时候我在调试器中看到过一些东西: 此类不是密钥值编码兼容的密钥Next

由于在使用Command-Q关闭应用程序之前事情完美无缺,我的代码不能100%错误,但显然它也有一些错误。 这有什么明显的原因可以吗?

实际上,如果不清楚的话。我已经制作了一个小样本项目来说明我的问题,以防万一有时间和兴趣来查看它。它显示一个从1到3的计数器,它有2个按钮来向后和向前移动计数器。但我不确定如何在这个网站上传这样的示例项目。

此时我试图开始使用希望找到一些bug的Instruments,但到目前为止还没有成功。该程序在一个阶段而不是之后(即使是我的小样本测试)工作我怀疑由于我使用Core Data的方式出错而导致一些棘手的问题。

1 个答案:

答案 0 :(得分:1)

您点击EXC_BAD_ACCESS的行很可能是红鲱鱼。虽然,它可以提供一些线索。

请特别考虑一下你在这做什么:

item=[item valueForKey:@"Next"];

您要将item的结果分配给原始valueForKey会怎样?如果它不是自动释放的对象,那么你就会遇到问题。

无论如何,首先关闭蝙蝠,检查我刚才提到的问题。接下来,运行Analyzer。然后,如果你已经修复了所有这些并且仍然存在问题,请开始在Instruments中运行Leaks工具。

有关详细信息,以及导致这些错误的原因的详尽链接以及如何修复的分步说明,请查看这些问题的答案:

finding reason for EXC_BAD_ACCESS - in Xcode4

Random EXC_BAD_ACCESS in a place that it cannot happen