更新:整理问题并使其更清晰
我在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
以下是对所发生情况的简单总结:
EXC_BAD_ACCESS
。 据我所知,我有句话。 addStoryItem的其他属性仍然在内存中徘徊 - 但当我试图达到它时句子不存在。是的,我在addStoryItem的dealloc中释放了句子 - 但是没有被调用(我有一个日志语句)。
你能帮忙吗?很高兴提供更多代码或信息。很沮丧!答案 0 :(得分:1)
您正在sentenceToUpDate
中创建新的didSelectRowAtIndexPath:
。当然,只要你不采用这种方法,这个参考就会被遗忘。
相反,您应该将检索到的对象分配给保留的属性,如下所示:
self.sentence = [fetchedResultsController objectAtIndexPath:indexPath];
现在应该按预期保留实例。
另一个可能的罪魁祸首是NSSet
的副本。尝试创建新的NSSet
以确保您不影响实体:
NSSet *setToBePassedToModal = [[NSSet alloc]
initWithSet:entity.toManyRelationship];