iOS SDWebImage加载过多图片时导致内存溢出app闪退的问题

今天测试时发现使用UICollectionView 加载到第四百多张图片时,app会崩溃,断点也找不到崩溃的位置,后来暴力调试定位到问题是SDWebImage造成的问题

解决方法:在-application didfinishalaunch 方法里添加一句代码:

[SDImageCache sharedImageCache].config.shouldCacheImagesInMemory = NO;

默认为YES时,SDWebimage会把所有的图片缓存起来,由于部分图片四五百K,导致运行内存过大,以至于闪退,将该bool值置为NO,使用磁盘缓存可暂时避免该问题,后续有更好的方案的话再更新文章吧

 

2019-5-15再次修改如下:

后续发现使用该方法会在列表视图滚动时出现图片的闪烁现象,原因是没有在缓存中缓存图片,造成的该问题,所以为了让图片的展示更加平滑,我注释掉了上述代码!

网上也有方法是在缓存图片时做进一步的压缩,将图片压缩到大小大概为50K左右,但是如果数量足够多的情况下,依然会存在闪退问题,最后楼主找了取巧的方法,在SDWebimage的缓存图片方法中添加两句代码:

if (self.weakCache.count > 150) {
            [[SDImageCache sharedImageCache] clearMemory];
        }

最终SDWebImage的代码实现变成如下:

判断缓存的图片数量,当数量达到一定值时,清空缓存

 

你可能感兴趣的:(iOS)