1

我有一个返回值的方法(一个 NSArray),并且该方法的实现包含调用一个具有完成块的方法。我想做的是返回一个从完成块中获得的 NSArray 。

有什么方法可以延迟从这个方法返回一个值,直到完成块完成执行?谢谢你。

4

1 回答 1

0

所以,你的意思是你想要这样的东西:

- (NSArray*)someMethod {
    [self someMethodWithACompletionBlock:^(NSArray *array) {
        return array;
    }];
}

好吧,不幸的是,它不会那样发生(因为块是一个函数,在它内部返回会使编译器认为你正在尝试从块返回一个值而不是封闭方法),但是你可以数组是一个输出参数并使用阻塞函数返回一个正确变异的数组:

- (NSArray*)someMethod {
   NSArray *retVal = nil;
    [self someMethodWithAnOutParameter:&retVal];
    return retVal;
}
于 2013-03-07T14:25:41.247 回答