SDWebImage大家都很熟悉了,大部分的APP加载图片使用的都是这个框架。
但是最近在使用这个框架加载图片的时候,出现了这样一个问题“Terminated due to memory issue”。刚开始的时候并不知道是因为图片的问题,就一直用instrument里面的工具调试了好久。后来才发现,在接口里返回的数据全部是高清大图,都是好几兆以上。然后把加载图片的代码全部注释,果然我的猜测是正确的,SDWebImage加载多个网络高清大图会导致软件直接闪退。
接着就是修改历程了。
图1
我发现在这里,就是图1中所标注的1的位置,图片取出来的时候就已经巨大无比,占用了很大的内存,导致内存来不及释放就崩溃,因为这里的图片的处理都是按原大小进行的。(注释:图1中所标注的2是后来的修改内容)
知道了问题所在,就可以很方便的修改啦,修改的策略就是如图1中所标注的2一样,在这里对图片进行一次等比压缩。
我们在UIImage+MultiFormat这个类里面添加如下压缩方法
图2
将这个压缩方法添加完之后,在sd_imageWithData:data这个方法里面调用就可以了(如图1所示)。
这样崩溃问题就解决了,是不是很方便呢❤️
结尾:以上就是关于SDWebImage加载多个网络高清图片内存崩溃问题的解决方法,如有不当之处,欢迎指正
END