一、项目中有一个全景图片的展示功能,后台返回的全景图尺寸很大,解码导致内存爆涨从而闪退。
1、图片在计算机里存储形式,是二进制文件。
2、使用SDWebImage加载全景图时,它会将NSData解码为UIImage对象,从而导致内存暴涨。
解决方案:通过SDWebImageContextImageThumbnailPixelSize来设置缩略图大小,从而减少内存开销,当然这个比例也需要设置得合理,太小了不清晰,太大了内存还是会暴涨导致闪退。(当然这里还有一个坑,那就是SDWebImage5.8.0及其以前都是设置CGImageSourceCreateThumbnailAtIndex的option参数中的kCGImageSourceCreateThumbnailFromImageIfAbsent为Yes,从而又导致when HEIC/JPEG contains an embed thumbnail but its size is much smaller than provided maxPixelSize的bug, 在5.8.1中已经修复,具体就是将kCGImageSourceCreateThumbnailFromImageIfAbsent改为kCGImageSourceCreateThumbnailFromImageAlways)
网友评论