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

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

これは、ライン 2 を呼び出す前に、ライン 1 が終了するまで待機しますか?

4

2 に答える 2

2

はい (ほとんどの場合)。Objective-C は、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 に答える