我正在尝试了解有关调度队列的更多信息。如果我在调度队列中放置三个方法,如下面的代码,它们是一个接一个地执行还是一次执行?
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^ {
[activeModel release];
[mainViewController showSceneList];
[mainViewController removeTidyUpScreen];
});
如何指定下一个不应该在前一个完成之前运行?
答案 0 :(得分:2)
将一个块 - 您提交给调度队列的代码 - 视为匿名函数。因此,块中的代码在这里按顺序执行,就像调用包含相同调用的函数,一个方法,然后是下一个,依此类推。
在您的特定示例中,您可能正在对不是主队列的队列上的UI执行某些操作。您必须在主队列上执行UI操作,因为它可以访问UI。您可以使用dispatch_get_main_queue()
代替,以确保您获得该队列。如果你想在背景中运行一些不会触及UI的东西,那么使用全局队列就没问题了,特别是如果不拖延UI这一点很重要。