【问题标题】:discarding reference to managed object in NSManagedObjectContext's reset method在 NSManagedObjectContext 的 reset 方法中丢弃对托管对象的引用
【发布时间】:2015-10-25 07:01:23
【问题描述】:

我对核心数据和 Objective-c 不熟悉。在 NSManagedObjectContext 的文档中,在 reset 方法中是这样写的:

如果您使用此方法,则应确保您还丢弃对使用接收器获取的任何托管对象的引用,因为之后它们将无效。

但是我真的想不通 - “丢弃对任何获取​​的托管对象的引用”是什么意思,我该怎么做? 顺便说一句,我问这个问题是因为我必须在调用重置方法时崩溃的应用程序中调试一些代码。

我尝试寻找答案,并在 Stack Overflow 上找到了this 问题,但无法真正找到答案。

如果您知道丢弃对获取的托管对象的引用是什么意思和/或如何做到这一点,我们将不胜感激。

【问题讨论】:

    标签: ios objective-c xcode core-data nsmanagedobjectcontext


    【解决方案1】:

    在当今的 ARC 世界中,这意味着您不应持有任何非归零引用。具有 assign 属性的强引用和属性都符合条件。

    传递托管对象通常不是一个好主意,因为在线程和适当的上下文方面存在问题。通常最好传递 objectID 并让被调用方将对象提取到适当的上下文中。如果你这样做,你应该不会有什么问题。

    附:如果对象的上下文是长期存在的并且您使用 performBlock:performBlockAndWait: API,则可以传递对象。如果您这样做,您可能会遇到持有对无效对象的引用的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2012-05-14
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多