凉白开不好喝 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。