我有一个委托类需要为某些方法返回数据。我的问题是我为获取数据所做的一些调用是异步的(使用完成块),因此很难从手头数据的方法返回。这是我想出的:
- (NSArray *)contentsAtPath:(NSString *)path
{
__block NSMutableArray *contentsArray = [NSMutableArray array];
__block BOOL blockProcessing = YES;
SuccessBlock success = ^(MyResult *result)
{
for (NSUInteger i = 0; i < result.count; i++)
{
MyItem *item = [result objectAtIndex:i];
[contentsArray addObject:item];
}
blockProcessing = NO;
};
[self.dataManager itemsAtPath:path success:success failure:nil];
while (blockProcessing) {
// wait for block to complete
}
return contentsArray;
}
有没有更好的方法可以在没有while循环的情况下实现这一点?