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

来源:互联网 发布:大数据分析书籍推荐 编辑:程序博客网 时间:2024/05/02 00:01
最近的一个项目,有大量的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这种需要重用的控件就很需要它了。

原创粉丝点击