如何从嵌套的GCD调度调用返回?
假设我有一个看起来像这样的方法:
- (void)foo {
dispatch_async(queue, ^{
if (flag) {
// I want out of here
return;
}
dispatch_sync(dispatch_get_main_queue(), ^{
if (flag) {
// I want out of here
return;
}
});
});
}
当我在dispatch_sync
函数内并调用return;
时,我认为只会保留当前函数,以便我需要再次从return;
调用dispatch_async
答案 0 :(得分:1)
是的,你的想法是正确的。每个块都是一个单独的函数,因此return只会从当前块返回。如果你想在dispatch_sync'd之前提前退出dispatch_async'd块,你需要另一个检查并在dispatch_sync之后返回。