【问题标题】:Pointer to a NSManagedObject outside a performBlock指向 performBlock 之外的 NSManagedObject 的指针
【发布时间】:2017-01-05 14:26:20
【问题描述】:

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

【问题讨论】:

  • 对于CoreData,你不能在线程之间传递对象,而是传递它的ObjectID并从其他线程的数据存储中再次获取。

标签: ios swift core-data nsmanagedobjectcontext


【解决方案1】:

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

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

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

最后,您还可以使用objectID 在上下文之间传递对象,这是一种不透明类型NSManagedObjectID。您可以使用object(with:) 在特定线程中初始化本地对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多