假设我有这种函数,里面有一个块:
-(BOOL)checkSomething
{
server = [[Server alloc] initWith:privateVar];
[server checkSomethingWithCompletion:^(BOOL success){
//I want to return the value of success
}];
}
如何返回从完成块中获取的值?我无法在其中的块外部设置变量。我也无法直接从块中返回值。
答案 0 :(得分:4)
如果您的checkSomethingWithCompletion:
方法同步运行,请在阻止之前声明__block
变量。然后,您可以从块中写入变量。
如果您的方法异步运行,checkSomething
将早于checkSomethingWithCompletion
返回,因此您无法从此块返回任何内容。在这种情况下,您应该使用一些异步方式来获取数据,例如使用通知,委托或回调方法。完成块也可以是checkSomething
方法的参数。