指向 performBlock 外的 NSManagedObject 的指针

Pointer to a NSManagedObject outside a performBlock

假设我已经在私有 NSManagedObjectContext 的 performBlock 中获取了一个 NSManagedObject。 我还在 AppDelegate 中保存了 NSManagedObject 的指针。所以基本上我把它放在 'main thread' 上。 这会导致任何问题吗? 请注意,我总是访问提交到正确上下文的 performBlock 中的属性。

不,你不能那样做。从不同上下文引用对象可能会使您的应用程序崩溃。

对此有多种解决方案。例如,您的全局变量可以是一个独特的属性,您可以使用它在正确的上下文中获取对象。

某些操作可能在与保存全局对象的上下文相同的上下文中完成。

最后,您还可以使用 objectID 不透明类型 NSManagedObjectID 在上下文之间传递对象。您可以使用 object(with:).

在特定线程中初始化本地对象