SDWebImage播放GIF存在的问题,以及解决办法

在使用SDWebImage加载GIF,当滑动加载更多的cell时,内存暴涨.问题出现的图如下:


Snip20170303_1.png

从上图可以看出,当滑动cell ,加载数据时,内存近似直线的上升.

什么原因照成的呢?

1 查看SDWebImage加载GIF核心文件

CGImageSourceRef source =CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);

    // 获得GIF的 动图的帧数
    size_t count = CGImageSourceGetCount(source);

    UIImage *animatedImage;

    // 帧数是1 直接返回静态图像
    if (count <= 1) {
        animatedImage = [[UIImage alloc] initWithData:data];
    }
    else {
        // 创建图像数组 (每一次读取gif都会进行创建) 消耗性能的根源!
        NSMutableArray *images = [NSMutableArray array];

        NSTimeInterval duration = 0.0f;

        for (size_t i = 0; i < count; i++) {
            CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL);

            // 累加时长
            duration += [self sd_frameDurationAtIndex:i source:source];

            // 添加到数组
            [images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]];

            CGImageRelease(image);
        }

        if (!duration) {
            duration = (1.0f / 10.0f) * count;
        }
        animatedImage = [UIImage animatedImageWithImages:images duration:duration];
    }

    CFRelease(source);

    return animatedImage;

2 解决方法

思路

1. 开启一个刷屏计时器,CADisplayLink
2. 每次触发,递增 index 只加载一桢图像!之前的图像立即释放!

使用YY_WebImage 能够很好的解决


UIImageView为 YYAnimatedImageView 这个类即可.

然后代码直接调用
头文件引用

#import "UIImageView+YYWebImage.h"
 [self.WAU_pic_imageView setImageWithURL:model.image2 placeholder:[UIImage imageNamed:@"chat_item_file"]];

按照上面所述,得到的结果如下:

Snip20170303_2.png

很明显可以看出,内存增加比较平缓,内存使用率也在可允许范围

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,763评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,741评论 25 709
  • 文|一口木木哒 距离这个概念,大多被用于物理上和数学上,但是在现实生活中,也常常出现。 最普遍的就是,恋人之间的距...
    一乔木木哒阅读 4,476评论 1 2
  • 一个人的时候 我以屋子为世界 灯下影,影上灯 从入夜到深更 半开着的窗透过窸窣虫鸣 楼外霓虹怂恿着内心汹涌 还有,...
    枕藏写影视阅读 3,038评论 0 3
  • 前言 Hello!欢迎来到象皮妮“俚语大课堂”!学习一国语言,一定要熟知当地的风土人情,就像我国有很多方言一样,如...
    外教先生阅读 4,204评论 0 4

友情链接更多精彩内容