0

再会,

我有一个封装在 GCD 块中的函数,它调用另一个封装在 GCD 块中的函数。

问题是,我需要调用者 GCD 块停止运行,直到我的函数 [self callFunction] 结束。

我可以编写另一个没有 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 回答