在 NSManagedObjectContext 的重置方法中丢弃对托管对象的引用

discarding reference to managed object in NSManagedObjectContext's reset method

我是核心数据的新手,一般来说 objective-c。在NSManagedObjectContext的文档中,在reset方法中,是这样写的:

If you use this method, you should ensure that you also discard references to any managed objects fetched using the receiver, since they will be invalid afterwards.

但是我真的想不通 - "discard reference to to any managed objects fetched" 是什么意思,我该怎么做? 顺便说一句,我问这个问题是因为我必须调试应用程序中的一些代码,该应用程序在调用重置方法时崩溃。

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

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

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

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

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