拥有并发类型为 NSPrivateQueueConcurrencyType
的 NSManagedObjectContext
可以使用 PromiseKit 来美化 performBlock:^{}
/performBlockAndWait:^ {}
?
我的第一个想法是这样写:
- (PMKPromise *)updateModel:(Model *)model
{
return [PMKPromise new:^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject) {
[_managedContenxtModel performBlock:^{
//...
fulfill(...)
}];
}];
}
但是,我担心,因为 Promise block 将在 DISPATCH_QUEUE_CONCURRENT
中注册,并且如果从不同线程多次调用 updateModel:
,那么它可以不保证 performBlock
中的 block 以正确的顺序注册。
有可能发生这种情况的改变吗?
使用 performBlockAndWait:^{}
怎么样?
最佳答案
您可以将 dispatch_promise_on
与您自己创建的并发队列一起使用:
- (PMKPromise *)updateModel:(Model *)model
{
return dispatch_promise_on(myQ, ^{
[_managedContenxtModel performBlockAndWait:^{
//...
}];
fulfill(...)
}];
}
如果这不能回答您的问题,请告诉我,我会尽力提供进一步帮助。
关于iOS PromiseKit 和 CoreData NSManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29401037/