在后台和主线程中使用托管对象上下文
Posted
技术标签:
【中文标题】在后台和主线程中使用托管对象上下文【英文标题】:Use of managed object context in background and main thread 【发布时间】:2013-01-29 10:45:17 【问题描述】:我有一个在点击按钮时被调用的函数。此外还有从这个方法调用的方法[self getData]
,它使用核心数据更新db中的值。
另外,我有一个后台线程正在运行,每分钟执行一次。我在后台线程中使用了单独的托管对象上下文和托管对象通知。但我不确定是在[self getData]
中使用新的托管对象实例还是[self managedObjectContext]
,因为此方法是在主线程上调用的,我是否必须为此使用托管对象通知?
在这些情况下,当有方法在后台和主线程上运行时,最佳做法是什么。
【问题讨论】:
【参考方案1】:您可以使用私有队列并发类型创建一个临时上下文,它是主托管对象上下文的子级:
NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
temporaryContext.parentContext = [self managedObjectContext];
[temporaryContext performBlock:^
// ...
]
当我研究如何执行此操作时,我发现本教程非常有用: http://www.cocoanetics.com/2012/07/multi-context-coredata/
【讨论】:
感谢您的回复,我正在检查它以上是关于在后台和主线程中使用托管对象上下文的主要内容,如果未能解决你的问题,请参考以下文章