原因是SDWebImage下载图片的时候decode这一操作会占用大量内存
旧版中用
[SDImageCache sharedImageCache].config.shouldDecompressImages = NO;
新版shouldDecompressImages没有了。那怎么关闭decode呢?看源码发现到处用这句代码判断。
BOOL shouldDecode = !SD_OPTIONS_CONTAINS(options,SDWebImageAvoidDecodeImage);
if (shouldDecode) {
image = [SDImageCoderHelper decodedImageWithImage:image];
}
答案就有了,设置图片的使用设置options就能关闭压缩
[image sd_setImageWithURL:url placeholderImage:PLACEHOLDERIMAGE options:SDWebImageAvoidDecodeImage];
问题虽然解决了。
题外话,看内存监控发现popViewController的时候图片内存并不会释放,缓存图片会一直累积,直到内存报警才会释放。于是给SDImageCache设置内存大小后,popViewController就会释放内存了。
[SDImageCache sharedImageCache].config.maxMemoryCost = 30 * 1024 * 1024;//限制图片缓存30M