我现在想知道我所有的核心数据都是在主线程上管理的,只有一个上下文。我使用了 instrument 并注意到保存操作阻塞了主线程很长一段时间。我想使用 GCD 在后台线程上运行我的保存操作
现在我了解了如何通过创建新线程/上下文来设置此过程并监听“保存”通知以合并回主线程。
但是当我创建一个新的上下文时,主线程上下文的所有更改都需要插入/合并到新的上下文中,否则它就没有任何东西可以保存了??我似乎可以找到任何例子。
例如在我的主要上下文中:
- 插入了 2 倍的用户
- 删除了 3 个墙贴
- 更新了一些 friend 关系。
现在我如何让我的背景上下文知道这些变化?
在应用程序启动时立即创建后台上下文并让它在主线程上监听 NSManagedObjectContextObjectsDidChangeNotification 以不断保持同步是否有意义?
最佳答案
在 iOS5 中,您可以使用新的并发类型轻松地做到这一点。如果您使用 NSPrivateQueueConcurrencyType 创建上下文,则不会阻塞主线程。但是您必须访问传递给 managedObjectContext:performBlock 方法的 block 内的上下文。
关于iOS 在后台保存主线程 NSManagedObjectContext 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774100/