u013052086
凉白开不好喝
采纳率33.3%
2017-03-06 09:02 浏览 2.7k
已采纳

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条回答 默认 最新

相关推荐