【发布时间】:2012-02-16 09:41:39
【问题描述】:
当我们第一次将 Core Data 添加到我们的应用程序时,我们遵循的教程在我们的应用程序委托中创建了一个 NSManagedObjectContext。它建议如果我们在其他线程上使用 Core Data,我们应该添加一个观察者来在保存线程的上下文时更新我们的主上下文,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:self.managedObjectContext];
这在applicationDidFinishLoadingWithOptions: 中发生过一次。但是,NSManagedObjectContext 的文档说:
一些系统框架在内部使用 Core Data。如果您注册以从所有上下文接收这些通知(通过将 nil 作为对象参数传递给 addObserver... 方法),那么您可能会收到难以处理的意外通知。
这向我表明 object 参数应该是正在保存的上下文(在我的情况下是背景上下文)而不是主上下文。是这样吗?我需要从我创建的每个 NSManagedObjectContext 中观察 NSManagedObjectContextDidSaveNotification 吗?
【问题讨论】:
标签: core-data nsmanagedobjectcontext