凉白开不好喝 2017-03-06 09:02 采纳率: 33.3%
浏览 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 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘