从嵌套函数返回(GCD)



如何从嵌套的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;时,我认为这只会离开当前函数,因此我需要从dispatch_async

再次调用return;

是的,你的想法是正确的。每个块都是一个单独的函数,所以return只会从当前块返回。如果您想在dispatch_sync'd阻塞发生时提前退出dispatch_async'd阻塞,则需要在dispatch_sync后进行另一次检查并返回。

相关内容

  • 没有找到相关文章

最新更新