iOS开发中利用SDWebImage加载多张大图导致程序崩溃

背景

某个页面上有一个TableView,TableView上的每个cell有多张图片,并且图片资料很大,当滑动页面的时候出现崩溃或者卡的情况。


多图.jpg

卡或崩溃原因

SDWebImage加载的图片占用内存太多造成内存泄漏从而导致程序崩溃。

解决方法

1.cell上加载的图片要加载小图,因此需要后台返回给我们一组缩略图。(微信朋友圈页面的效果)
2.修改SDWebImage内部代码,将一些大图进行压缩。


0.添加代码.png
  +(UIImage *)compressImageWith:(UIImage *)image{
float imageWidth = image.size.width;
float imageHeight = image.size.height;
float width = 640;
float height = image.size.height/(image.size.width/width);
float widthScale = imageWidth /width;
float heightScale = imageHeight /height;
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(CGSizeMake(width, height));
if (widthScale > heightScale) {
    [image drawInRect:CGRectMake(0, 0, imageWidth /heightScale , height)];
}else {
    [image drawInRect:CGRectMake(0, 0, width , imageHeight /widthScale)];
}
//从当前context中创建一个改变大小后的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//使当前的context出堆栈
UIGraphicsEndImageContext();
return newImage;
}

3.使用AFNetWorking中“UIImageView+AFNetWorking”分类进行图片的加载。

****本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊****

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 从小就听镇上的老人说远心亭去不得,去了会被芙蓉花精夺去心魂,变成疯子! 可也奇怪,镇上的人们都惧怕远心亭,可偏偏不...
    十九师弟阅读 318评论 8 3
  • 轻轻的一吻 告别了晚霞 张开怀,拥抱夜色 星馨点点 朦胧的雾色的月 我就这样的看着你 幻想着能碰到你 终于忍不住伸...
  • 何谓乡想,就是回到乡下的感想。 北上广容不下肉身,三四线城市放不下灵魂 我是个恋旧的人,对旧事物有很深的迷恋欢喜,...
    浮生梦一场阅读 367评论 0 1
  • 敬爱的王院长、智慧的高管们、勤奋的南方家人们,大家晚上好,我是视光中心执行部祁运腾,今天是2018年9月21日我的...
    祁运腾阅读 109评论 0 1