应用场景
论坛模块需要提供上传多张图片的功能,基本逻辑是,用户在相册中选择多张图片之后,一张张的上传,这个地方是上传到资源服务器中,所以会返回给客户端一个图片在资源服务器中的地址,那么需要记录的就是每一张图片的地址.由于是异步执行的上传图片,所以要在全部图片都上传成功后,获取到所有的图片地址.这种情况我觉得使用 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 中,但是我不会