【发布时间】:2013-03-07 12:47:59
【问题描述】:
我有一个返回值的方法(一个 NSArray),并且该方法的实现包含调用一个具有完成块的方法。我想做的是返回一个从完成块中获得的 NSArray。
有什么方法可以延迟从这个方法返回一个值,直到完成块完成执行?谢谢。
【问题讨论】:
-
能否提供代码示例?
标签: objective-c objective-c-blocks
我有一个返回值的方法(一个 NSArray),并且该方法的实现包含调用一个具有完成块的方法。我想做的是返回一个从完成块中获得的 NSArray。
有什么方法可以延迟从这个方法返回一个值,直到完成块完成执行?谢谢。
【问题讨论】:
标签: objective-c objective-c-blocks
所以,你的意思是你想要这样的东西:
- (NSArray*)someMethod {
[self someMethodWithACompletionBlock:^(NSArray *array) {
return array;
}];
}
好吧,不幸的是,它不会像那样发生(因为块是一个函数,在其中返回会使编译器认为您正在尝试从块返回值而不是封闭方法),但是您可以使数组成为输出参数并使用阻塞函数返回正确变异的数组:
- (NSArray*)someMethod {
NSArray *retVal = nil;
[self someMethodWithAnOutParameter:&retVal];
return retVal;
}
【讨论】: