0

更新:整理问题并使其更清晰

EXC_BAD_ACCESSNSManagedObject.

我有一个Sentence托管对象,我将它传递给模态视图 ( addStoryItem),如下所示:

addStoryItem.sentence = (Sentence*)[fetchedResultsController objectAtIndexPath:indexPath];

AddStoryItem设置为保留Sentence

@property (retain) Sentence *sentence;

有时用户需要做一些事情来显示另一个模式(在顶部addStoryItem)——这不会影响这个对象,但它确实需要一个 NSMutableSet 的副本——sentence.audiosets

如果我确实查看了此模式,则EXC_BAD_ACCESS每当我尝试访问或设置句子对象或其属性时,一旦用户返回到 addStoryItem,我就会得到一个

  • 有一个当前的托管对象上下文和获取的结果控制器
  • 除非我显示模态视图控制器(afaik 与句子对象没有任何关系),否则一切正常
  • 僵尸开启,但它什么也没告诉我(大脑?)

以下是对发生的事情的简单总结:

  • 用户在表格视图中选择行
  • 我从表中获取对象并设置模态的句子属性,然后使用 fetchedResultsController 显示模态
  • 我显示一个字符串,图像并设置从句子到模态的ui方面的nsset
  • 如果用户需要修改 nsset,他们会显示另一个模态,带有第一个 nsset 的副本(不会更改或访问句子对象)
  • 如果我在关闭第二个模态(或 NSLOG 句子)后尝试在句子中设置属性 - EXC_BAD_ACCESS

就我而言,我自己的句子。addStoryItem 的其他属性仍然在内存中徘徊 - 但是当我尝试访问它时,句子不存在。是的,我在 addStoryItem 的 dealloc 中释放了句子——但这没有被调用(我在那里有一个日志语句)。

你能帮我吗?很高兴提供更多代码或信息。相当沮丧!

4

1 回答 1

1

您正在创建一个新sentenceToUpDatedidSelectRowAtIndexPath:. 当然,一旦您退出该方法,该参考就会被遗忘。

相反,您应该将检索到的对象分配给您的保留属性,如下所示:

self.sentence = [fetchedResultsController objectAtIndexPath:indexPath];

现在该实例应该按预期保留。

另一个可能的罪魁祸首是您的NSSet. 尝试创建一个新NSSet的以确保您没有影响实体:

NSSet *setToBePassedToModal = [[NSSet alloc] 
                                initWithSet:entity.toManyRelationship];
于 2012-08-27T20:36:30.153 回答