NSManagedObject init / dealloc等价物

时间:2010-11-03 23:00:16

标签: iphone core-data nsmanagedobject

我在NSManagedObject子类foo中有一个对象ivar bar,只要该对象存在,我就必须始终在那里。

为了确保正确创建foo,我创建了foo时创建bar的子类,以创建foo。我在awakeFromFetch中也做了同样的事情,以确保从商店中提取barfoo存在。

为了抵消这一点,我在willTurnIntoFault和prepareForDeletion中释放bar

然而,事实证明,当我删除foo时,调用prepareForDeletion然后调用willTurnIntoFault,释放foo两次。

我意识到我可能不会在prepareForDeletion中释放它,但我想知道最佳实践是什么,所以我理解什么时候会变成一个错误,等等。对于一个普通的对象,我' d只需在init中创建{{1}}并在dealloc中销毁它。

谢谢!

1 个答案:

答案 0 :(得分:2)

不要只释放ivar,而是释放它并将其设置为nil。释放nil无效,因此如果它发生两次你就会好起来。

更好的是,使foo具有retain语义的属性,并始终通过-setFoo:进行设置。