SDWebimage 加载大量图片的时候内存泄露的解决方法(ios自学笔记)

SDWebImage这里不用多讲,都用过!!!

但是最近在使用过程中发现,在UITableView中不断加载更多的内容,使用SDWebImage会造成内存占用越来越大,稍微找了下问题原因,发现不少开发者都遇到过这个问题,中文的资料没有搜到该问题的解决办法,为了方便国内其他开发者遇到类似问题不浪费时间,这篇blog把解决方法记录如下:

首先检查了SDWebImage代码中对于memory warning的处理:

- (void)clearMemory {
    [self.memCache removeAllObjects];
}

其中self.memCache是NSCache类型的,可以看到SDWebImage本身对内存警告执行了操作,但是并没有什么X用。

用Instruments的allocations分析了一下内存使用情况:SDWebimage 加载大量图片的时候内存泄露的解决方法(ios自学笔记)_第1张图片

 

可以看到内存基本都在decodedImageWithImage:这个方法里被占用了

解决方法如下:

添加#import "SDImageCache.h"头文件

在使用SDWebImage加载较多图片造成内存警告时,定期调用

我这边是在上拉刷新的方法里面加入

 [[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];

即可解决。


你可能感兴趣的:(iOS自学笔记)