美文网首页
sdwebimage 加载大图导致项目内存溢出

sdwebimage 加载大图导致项目内存溢出

作者: 天天星期天 | 来源:发表于2022-11-15 09:54 被阅读0次

    我们经常使用sdwebimage 加载网络图片。就一句话 [imageView sd_setImageWithURL:[NSURL URLWithString:url];

    正常使用完全没有任何问题。然而最近做了个项目,照片高清修复。项目内存直接飙升2G,部分机型直接闪退。

    多方面检查后发现由于sdwebimage有缓存机制存在,导致项目内存过大 直接闪退。

    -----解决方案----
    其实框架本身已经给了我们解决方案。

    SDWebImageOptions newOptions = AvoidDecodeImage | ScaleDownLargeImages;
    [imageView sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:image options:newOptions];

    options中 SDWebImageScaleDownLargeImages 参数 对于大图下载,会边压缩边下载。

    图片大图下载使用 SDWebImageDownloaderScaleDownLargeImages

    SDWebImageDownloader *manager = [SDWebImageDownloader sharedDownloader];
    [manager downloadImageWithURL:[NSURL URLWithString:url] options:SDWebImageDownloaderScaleDownLargeImages progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
    NSLog(@"progress = receivedSize %ld expectedSize = %ld",receivedSize , expectedSize);
    } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {

        imageView.image = image;
    } ];
    

    完美解决大图内存暴增问题。

    ps:其实大图 应该由后台处理。例如放到七牛云中,可以直接选择分辨率。奈何我们前端,人微言轻 很多事只能自己来。

    相关文章

      网友评论

          本文标题:sdwebimage 加载大图导致项目内存溢出

          本文链接:https://www.haomeiwen.com/subject/gbmsxdtx.html