Ios 放弃对NSManagedObjectContext中托管对象的引用';s复位法

Ios 放弃对NSManagedObjectContext中托管对象的引用';s复位法,ios,objective-c,xcode,core-data,nsmanagedobjectcontext,Ios,Objective C,Xcode,Core Data,Nsmanagedobjectcontext,我不熟悉核心数据和objective-c。在NSManagedObjectContext的文档中,在重置方法中指出: 如果使用此方法,则应确保还放弃对使用接收器获取的任何托管对象的引用,因为这些引用之后将无效 然而,我真的搞不懂这一点——“放弃对任何已获取托管对象的引用”是什么意思?我该怎么做? 顺便说一下,我问这个问题是因为我必须调试应用程序中的一些代码,当调用reset方法时,这些代码会崩溃 我试图寻找答案,发现了关于堆栈溢出的问题,但无法真正找到答案 如果您知道放弃对获取的托管对象的引用意

我不熟悉核心数据和objective-c。在NSManagedObjectContext的文档中,在重置方法中指出:

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

然而,我真的搞不懂这一点——“放弃对任何已获取托管对象的引用”是什么意思?我该怎么做? 顺便说一下,我问这个问题是因为我必须调试应用程序中的一些代码,当调用reset方法时,这些代码会崩溃

我试图寻找答案,发现了关于堆栈溢出的问题,但无法真正找到答案


如果您知道放弃对获取的托管对象的引用意味着什么和/或如何做,我们将非常感谢。

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

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

另外,如果对象的上下文是长期存在的,并且使用
performBlock:
performBlockAndWait:
API,则可以传递对象。如果执行此操作,可能会在保留对无效对象的引用时遇到问题