我必须在 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 崩溃/不工作

核心数据 - 遍历 NSManagedObject 的属性

使用框架中的CoreData时如何解决“类'ClassName'的NSManagedObject必须具有有效的NSEntityDescription”

iOS 管理域模型和 NSManagedObject 模型