使用带返回值的dispatch_async进行多线程处理

时间:2014-08-03 05:02:36

标签: objective-c multithreading

我遇到的问题是我需要在dispatch_async代码中返回region值,而dispatch_async代码又应该返回外部函数的区域。函数中的dispatch_async代码如下:

dispatch_async(regionQ, ^{
    NSData *jsonData = [NSData dataWithContentsOfURL:photoInformationURL];
    NSDictionary *photoPlaceDictionary = [NSJSONSerialization JSONObjectWithData:jsonData
                                                                         options:0
                                                                           error:NULL];
    NSString *regionName = [FlickrFetcher extractRegionNameFromPlaceInformation:photoPlaceDictionary];
    region = [self createRegionWithName:regionName withContext:context];
});

还有另一个问题。函数[self createRegionWithName:regionName withContext:context]也是一个包含dispatch_async的函数。

我想过尝试在块的末尾放置return语句,但这会导致对各种辅助函数的嵌套调用的大量混乱,以确定队列的完成。我需要一个更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

你应该使用消息!您应该在dispatch_async结束时发送通知并处理该通知。只是谷歌关于它。