功能:
批量异步下载图片,等图片都下载完了,再去执行其他功能
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(@"所有图片下载完毕!!!");
}
});