2013-05-14 70 views
0

美好的一天,大中央调度函数调用

我有被封装在一个GCD块的函数,调用被封装在一个GCD块的其他的功能。

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

我可以编写另一个没有gcd封装的函数,但我不希望这样。有没有解决方法?

感谢

+3

发布您的代码。没有代码,我们将不得不对代码的工作方式做出假设。 – rckoenes 2013-05-14 06:53:32

+1

根据你目前的问题,你似乎需要使用dispatch_sync而不是dispatch_async – 2013-05-14 07:04:47

回答

2

既然是你可以直接调用该方法通常并保存结果的块。然后抓取主队列,如果你需要更新任何用户界面或完成后做任何你需要的。

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);