0
dispatch_queue_t queue = dispatch_queue_create("setup_cell", NULL);

dispatch_async(queue, ^{
    //Line 1
    //Line 2
});

这会等到第 1 行完成,然后再调用第 2 行吗?

4

2 回答 2

2

是的(在大多数情况下)。与 C 一样,Objective-C 是一种自顶向下的语言,这意味着通常发生在另一个代码块之上的块代码将在它之前执行。

唯一不会发生这种情况的真正方法是通过编译器优化,但我不会担心,因为编译器通常足够聪明,即使通过它们所做的所有优化,也可以保持代码自上而下。

于 2012-06-03T16:14:16.420 回答
0

是和否。

是:如果第 1 行和第 2 行只是直接的顺序代码。

否:如果第 1 行或第 2 行是任何并发队列。例如:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
});
于 2012-06-03T16:39:31.817 回答