凉白开不好喝 2017-03-06 09:02 采纳率: 0%
浏览 2967
已采纳

iOS 关于 使用 dispatch_group 进行多次网络请求

应用场景

论坛模块需要提供上传多张图片的功能,基本逻辑是,用户在相册中选择多张图片之后,一张张的上传,这个地方是上传到资源服务器中,所以会返回给客户端一个图片在资源服务器中的地址,那么需要记录的就是每一张图片的地址.由于是异步执行的上传图片,所以要在全部图片都上传成功后,获取到所有的图片地址.这种情况我觉得使用 dispatc_group 应该非常方便,但是问题出现了,

        // 创建 dispatch_group_t 队列
    dispatch_group_t group = dispatch_group_create();
    // 执行第一个下载任务
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        // 下载完毕...
    });
    // 执行第二个下载任务
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        // 下载完毕...
    });

    ... 

    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        // 获取所有下载任务的结果
    });

但是其实运行结果并没有变化,我认为 原因是在 每一个 dispatch_group_async 的 Block 中运行的是一个一步的下载代码,这样的话,其实是 group 又包裹了一层异步线程,我在最后获取到的之后,下载代码执行结束,但是下载的线程并没有获取到,不知道哪位大神帮帮忙,帮忙改下. 其实这个问题我觉得简化一下就是,把普通的 AF 下载放到 group 中,但是我不会

  • 写回答

1条回答 默认 最新

  • devmiao 2017-03-06 19:24
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件