指向 performBlock 外的 NSManagedObject 的指针
Pointer to a NSManagedObject outside a performBlock
假设我已经在私有 NSManagedObjectContext 的 performBlock 中获取了一个 NSManagedObject。
我还在 AppDelegate 中保存了 NSManagedObject 的指针。所以基本上我把它放在 'main thread' 上。
这会导致任何问题吗?
请注意,我总是访问提交到正确上下文的 performBlock 中的属性。
不,你不能那样做。从不同上下文引用对象可能会使您的应用程序崩溃。
对此有多种解决方案。例如,您的全局变量可以是一个独特的属性,您可以使用它在正确的上下文中获取对象。
某些操作可能在与保存全局对象的上下文相同的上下文中完成。
最后,您还可以使用 objectID
不透明类型 NSManagedObjectID
在上下文之间传递对象。您可以使用 object(with:)
.
在特定线程中初始化本地对象
假设我已经在私有 NSManagedObjectContext 的 performBlock 中获取了一个 NSManagedObject。 我还在 AppDelegate 中保存了 NSManagedObject 的指针。所以基本上我把它放在 'main thread' 上。 这会导致任何问题吗? 请注意,我总是访问提交到正确上下文的 performBlock 中的属性。
不,你不能那样做。从不同上下文引用对象可能会使您的应用程序崩溃。
对此有多种解决方案。例如,您的全局变量可以是一个独特的属性,您可以使用它在正确的上下文中获取对象。
某些操作可能在与保存全局对象的上下文相同的上下文中完成。
最后,您还可以使用 objectID
不透明类型 NSManagedObjectID
在上下文之间传递对象。您可以使用 object(with:)
.