为了防止爆内存,UIImageView在release之前,还是要把image置nil
来源:互联网 发布:大数据分析书籍推荐 编辑:程序博客网 时间:2024/05/02 00:01
最近的一个项目,有大量的scrollView+imageView,当iPad启动较多程序,再启动自己的这个程序的时候,就爆内存退出了~~
后来把所有的生成图片的方法,全部由imageNamed改成了imageWithContentsOfFile。
再运行,比之前好了不少,但是log还是会出现内存警告的信息,level 1,只是程序没有挂掉。
再在所有释放scrollView的子view的地方,把imageView.image设置为nil。
再运行,就没有警告log出现了~~
后来把所有的生成图片的方法,全部由imageNamed改成了imageWithContentsOfFile。
再运行,比之前好了不少,但是log还是会出现内存警告的信息,level 1,只是程序没有挂掉。
再在所有释放scrollView的子view的地方,把imageView.image设置为nil。
再运行,就没有警告log出现了~~
有则改之,无则加勉~~
imageNamed这个方法是会缓存UIImage的 (即使相关的imageView已经析构)
摘录一段:
对于大图片,慎用imageNamed这种方法来返回UIImage。
理由是通过这个方法得到的UIImage是一直缓存在内存中,直到程序结束为止——这和我原先以为的系统会做一个引用计数,如果在引用计数为0的情况下自动清除该块内存的想法不一致。而且值得一提的是所有用IB在xib文件内设置图像的方法都是调用imageNamed这个方法,也就是说:这些内存在程序结束之前是一直保留着的,对于某些比较吃内存的应用就需要好好规划一下了。不过UITableViewCell这种需要重用的控件就很需要它了。
- 为了防止爆内存,UIImageView在release之前,还是要把image置nil
- 为了防止爆内存,UIImageView在release之前,还是要把image置nil~~
- IOS内存nil与release的区别
- IOS内存nil与release的区别
- UIButton在设置Image时,会把之前设置的frame给覆盖掉。
- 这是为了确保使用者在变量为 nil
- 事务处理是为了防止在网络
- [Objective-C] 释放对象时在release之后要设成nil
- cocos2d-x内存释放:release()还是autorelease()?
- 为什么DirectX 11 在把矩阵(例如View矩阵)传给shader之前要进行转置
- nil和release区别
- nil和release区别
- 多线程操作数据库时为了防止数据的增删改的混乱该在数据库层还是程序层面上进行同步?
- 不要过劳死 -到底我们在为了什么而操劳,为了钱吗?还是为了快乐?
- 问题:在编程中为了防止内存泄漏是不是只要malloc或者new都有对应的free和delete就不会有内存泄漏
- iOS 释放内存/指针清空(release/=nil)深度讨论
- 属性在viewDidUnload中设nil,在dealloc中却release
- nil和release的区别
- java 实验七 之 阿拉伯整数转换为中文大写数字(注意读法)
- 贪吃蛇游戏
- object references an unsaved transient instance - save the transient instance before flushing
- C++ 日志类,
- hdu 2838 Cow Sorting
- 为了防止爆内存,UIImageView在release之前,还是要把image置nil
- ACM术语(不断整理中)
- shell文件权限问题
- POJ 1019 Number Sequence
- 获取Android SDK 源代码并在Eclipse中关联查看的方法
- 对Oracle 11用户进行解锁
- django操作数据库使用中文的方法
- Linux重定向(待整理)
- 解析Oracle数据扫描 Oracle SQL查询优化 总结篇