并行使用两个嵌套的dispatch_async?

时间:2012-11-25 15:22:24

标签: objective-c ios grand-central-dispatch

有人可以向我解释为什么在调试控制台中第一次NSLog(文本计数)之前我得到第二个NSLog(图像计数)?

我有两个并行dispatch_async(每个都是嵌套的)的目的是使用核心数据将文本和图像分别下载到表视图中。请注意,图像数据比文本大得多。

我首先尝试在一个嵌套的dispatch_async中下载文本和图像(跳回到主队列,然后执行文本和图像的映射和提交)。但是,我注意到在屏幕上显示单元格有显着延迟。我认为必须有一些更好的方法来做到这一点。任何建议都表示赞赏。

-(void)doSometing
{   
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
        // download text data
        [document.managedObjectContext performBlock:^{  
            NSLog(@"Text count is %d \n\n",[text count]);
            // insert text data to context
            // commit text data
        }];
    });


    // see if I can shorten wait time by download image separately
    //
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
        // download image

        [document.managedObjectContext performBlock:^{
            NSLog(@"Images count is %d \n\n",[images count]);
            // insert images into context
            // commit images     
        }];
    });

}

0 个答案:

没有答案