相信很多小伙伴都有遇到列表加载数量较多的图片时,内存涨到几百M或者更高,而且居高不下的情况,而网上遇到的解决方法,先一一列举:
方法一
//收到内存警告时,释放SD缓存图片占用的内存
//建议添加在基类
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
[SDWebImageManager.sharedManager.imageCache clearMemory];
[SDImageCache.sharedImageCache clearMemory];
}
方法二
//禁用缓存解压缩图片数据
//建议在需要加载大量图片的控制器调用
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
SDImageCache.sharedImageCache.config.shouldDecompressImages = NO;
SDWebImageDownloader.sharedDownloader.shouldDecompressImages = NO;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
SDImageCache.sharedImageCache.config.shouldDecompressImages = YES;
SDWebImageDownloader.sharedDownloader.shouldDecompressImages = YES;
}
如果加上以上代码之后发现,并没有什么变化,那么可以尝试一下以下方法
//建议全局设置,调节以下属性(可选)
//内存缓存中所有图片的像素的最大数量
SDImageCache.sharedImageCache.config.maxMemoryCost = 4096;
//内存缓存中所有图片占用内存大小总和,单位bytes
//maxCacheSize与maxMemoryCost要同时设置才能生效
SDImageCache.sharedImageCache.config.maxCacheSize = 10485760;
//在内存中保留时间,单位为秒
SDImageCache.sharedImageCache.config.maxCacheAge = 1;
//缓存的最大单元数,按需,这里我设置15
SDWebImageManager.sharedManager.imageCache.maxMemoryCountLimit = 15;
以上就是我的踩坑经历
与大家分享,不足之处欢迎指正