利用dispatch_group实现图片批量下载

功能:

批量异步下载图片,等图片都下载完了,再去执行其他功能


1.创建任务组imageGroup

// 创建组
    dispatch_group_t imageGroup = dispatch_group_create();

2.实现任务加入任务组,self.photoArray里装的是所有需要下载的图片的链接地址

通过for循环来创建多个任务

    for (NSString *imageUrl in self.photoArray) {
        // 任务加入组
        dispatch_group_enter(imageGroup);
        [[SDWebImageManager sharedManager]downloadImageWithURL:[NSURL URLWithString:imageUrl] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
            
        } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
            if (image) {
                [self.imageArray addObject:image];
                NSLog(@"%@",imageURL.absoluteString);
            }
            // 任务完成离开组
            dispatch_group_leave(imageGroup);
            
        }];
    }

ps:有加入任务组的方法dispatch_group_enter(),也需要有任务完成,离开任务组的方法dispatch_group_leave();


3.当imageGroup的任务都leave了之后就会到这个方法,在主线程执行刷新UI的方法

// 组里任务都完成后进入这个方法,从主线程刷新UI
    dispatch_group_notify(imageGroup, dispatch_get_main_queue(), ^{
        [MBProgressHUD hideHUDForView:self.view];
        if (self.imageArray.count == 0) {
           [MBProgressHUD showError:@"图片资料加载失败" afterDelay:1.0];
        }else{
            [self setupCollectionView];
            NSLog(@"所有图片下载完毕!!!");
        }
    });




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值