Sdwebimage异步下载多张图片

如何用sdwebimage下载多张图片,并在全部下载完后在主线程拿到所有图片并进行Ui更新呢?

阅读 8.3k
2 个回答

用GCD

dispatch_group_t group = dispatch_group_create();
// 有多张图片URL的数组
NSArray *imageURLArr = @[@"url",@"url",@"url"];
for (NSString *imageUrlStr in imageURLArr) {
    dispatch_group_enter(group);
    // 需要加载图片的控件(UIImageView, UIButton等)
    UIImageView *imageView = [UIImageView new];
    [imageView sd_setImageWithURL:[NSURL URLWithString:imageUrlStr] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
        if (error) {
            // 加载失败
        } else {
            // 加载成功
        }
        dispatch_group_leave(group);
    }];
}
// 下载图片完成后, 回到主线
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    // 刷新UI
});
新手上路,请多包涵

我在使用这个方式的时候,发现图片少的时候是没有问题的,但是当图片量多的时候,会出现for循环的时候,只在imageView sd_ 这里断点停留,但是不进入completed里面,而且在循环到7-8次的时候,就不在循环,界面也一直显示我初始设置的SVPugress的东西,不进入回到主线的部分,我查找了相关的帖子发现可能是超过的SDWebImage的缓存值,图片大概是3500*1200的样子,然后我试着去修复,改用UIImageView+ AFNetworking 来做下载图片,但是遇到了XPC问题 XPC connection interrupted 不知道该怎么去解决,找到的相关帖子写的内容只是将界面Nav pop跳转的情况,而不是这里的问题 我该怎么解决呢? 能否提供一些思路

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题