将值返回到块外的另一个变量

时间:2013-04-26 15:19:20

标签: objective-c objective-c-blocks

假设我有这种函数,里面有一个块:

-(BOOL)checkSomething
{
    server = [[Server alloc] initWith:privateVar];

    [server checkSomethingWithCompletion:^(BOOL success){
        //I want to return the value of success
    }];

}

如何返回从完成块中获取的值?我无法在其中的块外部设置变量。我也无法直接从块中返回值。

1 个答案:

答案 0 :(得分:4)

如果您的checkSomethingWithCompletion:方法同步运行,请在阻止之前声明__block变量。然后,您可以从块中写入变量。

如果您的方法异步运行,checkSomething将早于checkSomethingWithCompletion返回,因此您无法从此块返回任何内容。在这种情况下,您应该使用一些异步方式来获取数据,例如使用通知,委托或回调方法。完成块也可以是checkSomething方法的参数。