【知识点】[[UIScreen mainScreen] bounds]和 applicationFrame,imageNamed内存泄露的解决方法
2013-07-22 08:56
204 查看
bounds就是屏幕的全部区域,
applicationFrame就是app显示的区域,不包含状态栏(高度20,如果状态栏隐藏的话,那么,这个结果就和bounds一样了)
UIImage 加载图片使用“[UIImage
imageNamed:@"xxx.png"]时,系统会把图像Cache到内存。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的内存是一件相对来说比较麻烦的事情。例如:如果利用imageNamed的方式加载图像到一个动态数组,然后将将数组赋予一个UIView的对象的进行逐帧动画,那么这将会很有可能造成内存泄露。解决上述问题的最佳方法是:
view
source
print?
applicationFrame就是app显示的区域,不包含状态栏(高度20,如果状态栏隐藏的话,那么,这个结果就和bounds一样了)
UIImage 加载图片使用“[UIImage
imageNamed:@"xxx.png"]时,系统会把图像Cache到内存。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的内存是一件相对来说比较麻烦的事情。例如:如果利用imageNamed的方式加载图像到一个动态数组,然后将将数组赋予一个UIView的对象的进行逐帧动画,那么这将会很有可能造成内存泄露。解决上述问题的最佳方法是:
view
source
print?
1 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) { |
2 | [UIImage initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:@ "xxx@2x.png" ]] CGImage] scale:2.0 orientation:UIImageOrientationUp]; |
3 | } else { |
4 | [UIImage imageWithContentsOfFile:@ "xxx.png" ]; |
相关文章推荐
- [[UIScreen mainScreen] bounds]获取尺寸不对 解决
- 区别[[UIScreen mainScreen] bounds] 和 [[UIScreen mainScreen] applicationFrame]
- [[UIScreen mainScreen] applicationFrame] 和 [[UIScreen mainScreen] bounds]的区别
- [[UIScreen mainScreen] bounds]和 applicationFrame
- [[UIScreen mainScreen] bounds]和 applicationFrame的区别
- [[UIScreen mainScreen] bounds]获取尺寸不对
- [[UIScreen mainScreen] bounds]和 applicationFrame
- [[UIScreen mainScreen] bounds]获取尺寸不对
- [[UIScreen mainScreen] bounds]和 applicationFrame
- [[UIScreen mainScreen] bounds]和 applicationFrame
- PHP出现 Warning: session_start()的解决方法-菜鸟学Ajax知识点
- 报IndexOutOfBoundsException 解决方法
- eclipse Java文件打开异常解决方法 :java.lang.StringIndexOutOfBoundsException: String index out of range: 26
- IOS学习笔记2-IOS屏幕 [[UIScreen mainScreen] bounds] 与[UIScreen mainScreen] applicationFrame]区别
- [ios ui][[UIScreen mainScreen] bounds]和 applicationFrame
- 关于Java中使用split()方法时报ArrayIndexOutOfBoundsException数组越界异常解决方法
- jedis 中出现ArrayIndexOutOfBoundsException异常的解决方法
- [[UIScreen mainScreen] bounds]和 applicationFrame
- 【前端知识点】关于跨域的理解及解决方法
- 关于UIScreen的applicationFrame和bounds方法区别