【问题标题】:Objective-C return from nested functions (GCD)Objective-C 从嵌套函数返回 (GCD)
【发布时间】:2012-12-28 20:46:51
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多