0

我将如何从嵌套的 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

4

1 回答 1

1

是的,你的想法是正确的。每个块都是一个单独的函数,因此 return 只会从当前块返回。如果您想提前退出 dispatch_async 的块(如果 dispatch_sync 的块这样做了),您需要再次检查并在 dispatch_sync 之后返回。

于 2012-12-28T20:59:25.847 回答