【问题标题】:EXC_BAD_ACCESS caused by a Core Data relationship?由 Core Data 关系引起的 EXC_BAD_ACCESS?
【发布时间】:2023-03-26 15:48:02
【问题描述】:

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 个按钮来前后移动计数器。但我只是不确定如何在这个网站上上传这样一个示例项目。

此时我尝试开始使用 Instruments 希望找到一些错误,但到现在为止都没有成功。该程序在一个阶段运行,而不是之后(即使是我的小样本测试)我怀疑由于我使用 Core Data 的方式有一个错误导致了一些棘手的问题。

【问题讨论】:

    标签: ios4 core-data ios5


    【解决方案1】:

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

    请考虑一下您在这里具体做什么:

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

    valueForKey 的结果分配给的原始item 会发生什么情况?如果它不是自动释放的对象,那么你就有问题了。

    无论如何,首先,检查一下我刚才提到的问题。接下来,运行分析器。然后,如果您已经解决了所有问题并且仍然存在问题,请开始在 Instruments 中运行 Leaks 工具。

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

    finding reason for EXC_BAD_ACCESS - in Xcode4

    Random EXC_BAD_ACCESS in a place that it cannot happen

    【讨论】:

    • 谢谢,这似乎是我应该检查的一些有趣的点。同时我做了一个示例项目来说明我的绊脚石。 item 只是一个指针(在循环数据结构中)并且没有被分配,我认为应该没有内存问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多