0

我想更多地了解调度队列。如果我将三个方法放在派发队列中,如下面的代码所示,它们是一个接一个地执行还是一次执行?用多种方法调度队列? iPhone

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

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

}); 

我该如何指定下一个应该运行,直到前一个完成?

回答

2

觉得块 - 您提交给调度队列,你在这里的代码 - 作为一个匿名函数。所以,你在你的块这里的代码按顺序执行,就像如果你调用一个包含相同的调用,一种方法,那么接下来的一个功能,等等。

在你的具体的例子,它看起来像你可以做一些操作上的队列不是主要的队列中的UI。您必须在主队列上执行UI操作,因为它可以访问UI。您可以使用dispatch_get_main_queue()代替,以确保你得到这个队列。如果你有你想在不会接触到UI后台运行的东西,然后使用一个全球性的队列是好的,特别是首选,如果不熄火的UI是非常重要的。