使用多种方法调度队列?苹果手机

时间:2011-12-16 19:47:35

标签: iphone objective-c xcode multithreading grand-central-dispatch

我正在尝试了解有关调度队列的更多信息。如果我在调度队列中放置三个方法,如下面的代码,它们是一个接一个地执行还是一次执行?

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^  {  

    [activeModel release];
    [mainViewController showSceneList];
    [mainViewController removeTidyUpScreen];

});

如何指定下一个不应该在前一个完成之前运行?

1 个答案:

答案 0 :(得分:2)

将一个块 - 您提交给调度队列的代码 - 视为匿名函数。因此,块中的代码在这里按顺序执行,就像调用包含相同调用的函数,一个方法,然后是下一个,依此类推。

在您的特定示例中,您可能正在对不是主队列的队列上的UI执行某些操作。您必须在主队列上执行UI操作,因为它可以访问UI。您可以使用dispatch_get_main_queue()代替,以确保您获得该队列。如果你想在背景中运行一些不会触及UI的东西,那么使用全局队列就没问题了,特别是如果不拖延UI这一点很重要。