更新:整理问题并使其更清晰
我EXC_BAD_ACCESS
在NSManagedObject
.
我有一个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 中释放了句子——但这没有被调用(我在那里有一个日志语句)。
你能帮我吗?很高兴提供更多代码或信息。相当沮丧!