IOS 内存占用问题之 ImageIO_PNG_Data
2015-06-18 15:35
756 查看
iOS 内存占用问题之ImageIO_PNG_Data
问题来源
做APP调试的时候,发现总是收到 didReceiveMemoryWarning,打开 Instruments 的 Memory Leaks 一看,ImageIO_PNG_Data占了好大的内存(近100MB)。其实这个问题零零碎碎地在很多地方都有人提到过,但是提到ImageIO_PNG_Data似乎不多,碰到问题的时候不好搜索,这里着重提一下。
问题分析
这篇文章里提到了关于图片缓存的问题,看起来和我们碰到的这个问题有关。具体来说,就是我们通常会用两种方式加载图片:
UIImage *img = [UIImage imageNamed:@"myImage"]; // caching
// or
UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"]; // no caching
根据苹果官方参考:
If you have an image file that will only be displayed once and wish to ensure that it does not get added to the system’s cache, you should instead create your image using imageWithContentsOfFile:. This will keep your single-use image out of the system image cache, potentially improving the memory use characteristics of your app.
imageNamed: 会将图片加载到系统缓存,适合需要重复利用的图片,提高加载速度
imageWithContentsOfFile: 不会将图片加载到系统缓存,适合不重复利用的图片
问题解决
检查使用到 imageNamed: 的地方,根据需求场景,将不必要缓存的部分全部替换为 imageWithContentsOfFile:,会发现ImageIO_PNG_Data的内存占用瞬间就降下来了。相关文章推荐
- phonegap(cordova)在ios系统实现录音功能的几种特殊情况
- iOS 多语言支持
- iOS多线程编程:线程同步总结
- iOS 播放音频的几种方法
- iOS性能优化系列
- IOS项目之弹出动画二
- IOS kvc和kvo详解<一>
- iOS 通过constraint 进行autolayout的动画
- 判断iOS设备类型的方法
- IOS中计时器NSTimer的使用
- iOS使用脚本批量打渠道包
- Mac & iOS开发常见错误代码对照表
- iOS开发应用程序图标大小汇总
- 唐巧的iOS技术博客好文列表
- 转:iOS7导航栏遮盖问题的解决
- IOS开发学习实例之二LOL英雄列表
- iOS7导航栏遮盖问题的解决
- iOS图片拉伸技巧
- iOS 获取手机的型号,系统版本,软件名称,软件版本
- iOS聊天下拉刷新聊天记录的实现