IOS 内存占用问题之 ImageIO_PNG_Data
IOS 内存占用问题之 ImageIO_PNG_Data
陈圣晗 发表于3年前
IOS 内存占用问题之 ImageIO_PNG_Data
  • 发表于 3年前
  • 阅读 104
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

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的内存占用瞬间就降下来了。

共有 人打赏支持
粉丝 5
博文 12
码字总数 7377
作品 2
×
陈圣晗
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: