iOS PromiseKit 和 CoreData NSManagedObjectContext

标签 ios core-data concurrency nsmanagedobjectcontext promisekit

拥有并发类型为 NSPrivateQueueConcurrencyTypeNSManagedObjectContext 可以使用 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/

相关文章:

ios - 核心数据与 fetchedResultsController 的多对多关系

java - 监控 Java 8 ForkJoinPool

ios - 如果在两个类中使用,ViewWillTransitionToSize 不起作用

objective-c - 通过发送“类型”来创建工厂类

ios - UIAlertView exclusiveTouch 按钮 iOS8

ios - iCarousel + UITableView = cellForRowAtIndexPath indexPath 始终为空

ios - 状态恢复和托管对象崩溃

ios - 为什么搜索模型文件的路径时扩展名是 "momd"而不是 "xcdatamodel"

jquery - 将 sDom 生成的 html 组件移出数据表?

Java @Contended 与类层次结构