从包含块的方法返回值

时间:2013-03-07 12:48:00

标签: objective-c objective-c-blocks

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

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

1 个答案:

答案 0 :(得分:0)

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

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

嗯,不幸的是,它不会发生这种情况(因为块是一个函数,在它内部返回使得编译器认为你试图从块中返回一个值而不是封闭的方法),但是你可以使数组成为out-parameter并使用阻塞函数返回一个正确变异的数组:

- (NSArray*)someMethod {
   NSArray *retVal = nil;
    [self someMethodWithAnOutParameter:&retVal];
    return retVal;
}