0

良い一日、

GCD ブロックにカプセル化された関数があり、GCD ブロックにカプセル化された別の関数を呼び出します。

問題は、関数 [self callFunction] が終了するまで、呼び出し元の GCD ブロックの実行を停止する必要があることです。

gcd カプセル化を持たない別の関数を作成することもできますが、そうしない方がよいでしょう。解決策はありますか?

ありがとう

4

1 に答える 1

2

これはブロックなので、通常どおりメソッドを呼び出して結果を保存できます。次に、UI を更新する必要がある場合、または完了後に必要なことを行う必要がある場合は、メイン キューを取得します。

    dispatch_queue_t queue = dispatch_queue_create("read disc", NULL);
dispatch_async(queue, ^{
   result = [self readDisc];
    dispatch_async(dispatch_get_main_queue(), ^{
      //update UI or do whatever you need to do with the result of readDisc
    });
});
dispatch_release(queue);
于 2013-05-14T07:12:37.013 に答える