我有一个在单击按钮时被调用的函数。此外,还有[self getData]
从此方法调用的方法,它使用核心数据更新 db 中的值。
另外,我有一个后台线程正在运行,每分钟执行一次。我在后台线程中使用了单独的托管对象上下文和托管对象通知。但我不确定是使用新的托管对象实例还是[self managedObjectContext]
在[self getData]
主线程上调用此方法,我是否必须为此使用托管对象通知?
当有方法在后台和主线程上运行时,在这些情况下,最佳实践是什么。
您可以使用私有队列并发类型创建一个临时上下文,它是主托管对象上下文的子级:
NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
temporaryContext.parentContext = [self managedObjectContext];
[temporaryContext performBlock:^{
// ...
}]
当我在研究如何做到这一点时,我发现本教程非常有用:http: //www.cocoanetics.com/2012/07/multi-context-coredata/