为了防止爆内存,UIImageView在release之前,还是要把image置nil

本文分享了一个iPad应用在遇到内存溢出问题后的优化过程。通过将imageNamed替换为imageWithContentsOfFile,并在适当时候将imageView.image设为nil,有效减少了内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的一个项目,有大量的scrollView+imageView,当iPad启动较多程序,再启动自己的这个程序的时候,就爆内存退出了~~

后来把所有的生成图片的方法,全部由imageNamed改成了imageWithContentsOfFile。

再运行,比之前好了不少,但是log还是会出现内存警告的信息,level 1,只是程序没有挂掉。

再在所有释放scrollView的子view的地方,把imageView.image设置为nil。

再运行,就没有警告log出现了~~

有则改之,无则加勉~~


imageNamed这个方法是会缓存UIImage的 (即使相关的imageView已经析构) 

摘录一段:
对于大图片,慎用imageNamed这种方法来返回UIImage。

        理由是通过这个方法得到的UIImage是一直缓存在内存中,直到程序结束为止——这和我原先以为的系统会做一个引用计数,如果在引用计数为0的情况下自动清除该块内存的想法不一致。而且值得一提的是所有用IB在xib文件内设置图像的方法都是调用imageNamed这个方法,也就是说:这些内存在程序结束之前是一直保留着的,对于某些比较吃内存的应用就需要好好规划一下了。不过UITableViewCell这种需要重用的控件就很需要它了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值