首页 技术 正文
技术 2022年11月15日
0 收藏 602 点赞 3,213 浏览 1024 个字

这个坑会在特定的情况下特别明显:

iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题

类似朋友圈的添加多张本地选择\拍照 的图片 并在界面上做一个预览功能

由于没有特别的相机\相册需求,则直接使用系统自带的UIImagePickerController

最简单的方法-> UIImagePickerController 选择图片 -> 代理返回图片对象-> 在array中添加图片对象 -> 用collectionview显示->  提交的时候递归上传array的image内容

然而这里就发现一个会吃内存的坑…

代理返回的UIImage对象 添加到array时,内存暴涨

iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题

其实也不是添加对象到array里导致的问题,因为我的collectionview 不reload 的话,图片不显示时  内存也是正常的,只有把这个image对象放置到UIImageView时 内存才会暴涨

因此怀疑是图片解码方面的原因:解码会调用到ram缓存,以便下次读取时不用再次解码

然而为了避免app占用ram过高而被系统kill掉,这个图片必须要处理一下

通过图片重新绘制得到UIImage这个占用内存的情况会消失

因此写个Category方法来简单处理一下就可以了

- (UIImage *)redraw{
CGFloat width = CGImageGetWidth(self.CGImage);
CGFloat height = CGImageGetHeight(self.CGImage); // 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(CGSizeMake(width, height)); // 绘制图片大小设置
[self drawInRect:CGRectMake(, , width, height)]; // 从当前context中创建一个图片
UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈
UIGraphicsEndImageContext(); // 返回新的改变大小后的图片
return image;
}

结果:

iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题

这篇不是干货,只是解决了一个小问题.

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #00b1ff}
span.s1 {font-variant-ligatures: no-common-ligatures}
–>

上一篇: Junit和Spring
下一篇: windows 安装 docker
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,492
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,293