Objective-C 从嵌套函数返回 (GCD)

标签 objective-c c function return grand-central-dispatch

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

最佳答案

是的,你的想法是正确的。每个 block 都是一个单独的函数,因此 return 只会从当前 block 返回。如果你想在dispatch_sync block 退出的情况下提前退出dispatch_async block ,那么你需要在dispatch_sync之后进行另一次检查并返回。

关于Objective-C 从嵌套函数返回 (GCD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075580/

相关文章:

c++ - 使用 MSVC++ 9 进行 C 编程的建议

c - 重新分配内存在 c 中不起作用

c++ - 为什么函数不能在 C 中有引用参数?

ios - 如何修复这个变异错误?

objective-c - 贝塞尔路径解决性能问题

从数据文件读取矩阵,然后计算它们的乘积,然后将结果矩阵打印到数据文件的代码

Python - 为作为函数其他参数函数的参数传递默认值

ios - 在 Landscape only app -iOS 中使用相机

objective-c - Speex 编码/解码导致嘶嘶声(Objective-c)

Javascript call() & apply() vs bind()?