首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >澄清NSConfinementConcurrencyType上下文作为父上下文的子上下文

澄清NSConfinementConcurrencyType上下文作为父上下文的子上下文
EN

Stack Overflow用户
提问于 2014-01-13 18:02:55
回答 2查看 969关注 0票数 2

在阅读有关NSConfinementConcurrencyType的文档时,我阅读了以下内容

不能将此并发类型与新的嵌套上下文功能结合使用。

这句话对我来说很奇怪,因为我可以这样做,例如,在NSOperation子类中,例如

代码语言:javascript
复制
NSManagedObjectContext * localMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
[localMOC setParentContext:[self mainContext]];

mainContext可以从外部注入,并且是NSMainQueueConcurrencyType类型的。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-13 18:11:11

是的,该文档的格式很差,的措辞也很差。

我认为它的意思是你不能使用:

代码语言:javascript
复制
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
[moc setParentContext:[self managedObjectContext]];

我以前已经测试过了,但它确实失败了,有一个错误。当然,当我在iOS 5.x中测试它时,YMMV。

这与以下不同:

代码语言:javascript
复制
NSManagedObjectContext * localMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
[localMOC setParentContext:[self mainContext]];

它工作得很好,是更新的核心数据设计的一部分。

这两个初始化器与旧的、具有历史意义的初始化器之间有一个细微的区别,即缺少一些关键组件,以使父-子上下文能够正常工作。

票数 2
EN

Stack Overflow用户

发布于 2014-01-13 18:32:56

我可能错了,但根据一项简短的测试,我认为对NSConfinementConcurrencyType的限制

不能将此并发类型与新的嵌套上下文功能结合使用。

应用于父上下文,而不应用于子上下文。所以

代码语言:javascript
复制
NSManagedObjectContext * localMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
[localMOC setParentContext:[self mainContext]];

工作,只要[self mainContext]是用主队列或私有队列并发类型创建的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21098211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档