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

时间:2012-12-28 20:46:52

标签: 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

1 个答案:

答案 0 :(得分:1)

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