【问题标题】:Multithreading with dispatch_async with return value带返回值的 dispatch_async 多线程
【发布时间】:2014-08-03 05:02:36
【问题描述】:

我遇到的问题是我需要在 dispatch_async 代码中返回 region 值,该值又应该返回外部函数的区域。函数内的 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 语句放在块的末尾,但这会导致大量嵌套调用各种帮助函数来确定我的队列是否完成。我需要一个更好的方法来做到这一点。

【问题讨论】:

  • 您可以使用 dispatch_semaphore 来等待该值。或者只是 dispatch_async 自己回到主队列。

标签: objective-c multithreading


【解决方案1】:

您应该使用消息传递!您应该在dispatch_async 结束时发送通知并处理该通知。谷歌一下就知道了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2012-02-27
    相关资源
    最近更新 更多