我必须在 NSManagedObject didTurnIntoFault 中调用 super 吗?
Posted
技术标签:
【中文标题】我必须在 NSManagedObject didTurnIntoFault 中调用 super 吗?【英文标题】:Do I have to call super in NSManagedObject didTurnIntoFault? 【发布时间】:2009-06-19 12:50:17 【问题描述】:我必须在didTurnIntoFault
中拨打 super 吗?我在文档中找不到任何说明。
- (void)didTurnIntoFault
[super didTurnIntoFault]; // Do I have to call super?
// ...
【问题讨论】:
【参考方案1】:如果您继承 NSManagedObject 并覆盖 -didTurnIntoFault,您必须将消息发送给 super。
请参阅 NSManagedObject 类参考的Subclassing Notes。
【讨论】:
【参考方案2】:不,我不这么认为。 didTurnIntoFault
的目的是让您有机会释放您可能持有的任何实例变量(尤其是瞬态值)。虽然它旨在用作NSManagedObject
子类的dealloc
的替代品,但这是因为NSManagedObject
的生命周期与普通的NSObject
完全不同。因此,尽管它的用途与 dealloc
大致相同,但其工作方式却不尽相同。
当然,如果您将自己的子类NSManagedObject
子类化,则需要在那里调用[super didTurnIntoFault]
。
也就是说,我想NSManagedObject
的实现可能是无操作的,所以我真诚地怀疑无论如何调用它有什么害处。此外,由于它没有任何害处,它可能会帮助您记住在真正重要时调用它。
【讨论】:
我同意你的看法。我问的原因是为了安全起见。以上是关于我必须在 NSManagedObject didTurnIntoFault 中调用 super 吗?的主要内容,如果未能解决你的问题,请参考以下文章
原因:'一个'NSManagedObject'类的NSManagedObject必须有一个有效的NSEntityDescription? [复制]
是否不需要在 Swift 3 中继承 NSManagedObject ?
带有 NSManagedObject 的 EVReflection 崩溃/不工作
使用框架中的CoreData时如何解决“类'ClassName'的NSManagedObject必须具有有效的NSEntityDescription”