dispatch_queue_t queue = dispatch_queue_create("setup_cell", NULL);
dispatch_async(queue, ^{
//Line 1
//Line 2
});
这会等到第 1 行完成,然后再调用第 2 行吗?
dispatch_queue_t queue = dispatch_queue_create("setup_cell", NULL);
dispatch_async(queue, ^{
//Line 1
//Line 2
});
这会等到第 1 行完成,然后再调用第 2 行吗?
是的(在大多数情况下)。与 C 一样,Objective-C 是一种自顶向下的语言,这意味着通常发生在另一个代码块之上的块代码将在它之前执行。
唯一不会发生这种情况的真正方法是通过编译器优化,但我不会担心,因为编译器通常足够聪明,即使通过它们所做的所有优化,也可以保持代码自上而下。
是和否。
是:如果第 1 行和第 2 行只是直接的顺序代码。
否:如果第 1 行或第 2 行是任何并发队列。例如:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
});