0

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

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

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

}

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

4

1 回答 1

4

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

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

于 2013-04-26T15:23:31.763 回答