• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 使用 [UIImage imageNamed] 时未释放内存警告的图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:26:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在我的应用中,我使用了这条线

[UIImage imageNamed:imageName] 

每当加载图像时。据我了解,此功能会缓存图像以供以后使用 - 这很棒,因为大多数图像都被多次使用。

但是 - 当我模拟内存警告时,这些图像使用的内存似乎没有被释放 - 因为大部分内存实际上是由缓存的图像使用的,所以任何当前不需要的内存都非常重要图像从内存中释放!

-

这是预期的行为,还是图像是否保留在内存中,因为它只是一个模拟的内存警告?或者,如果我想发布这些图像,我是否必须为 UIImage 编写自己的类别来缓存图像但在内存短缺时释放不需要的图像(或者更好的是,是否有人已经这样做了/共享了它的代码) ??



Best Answer-推荐答案


我所做的是利用不缓存的 -initWithConentsOfFile 和用于存储的 NSMutableDictionary 创建自己的缓存机制,分配的每个图像都存储在字典中图像名称作为键。如果达到内存警告,您可以释放字典并将其归零,从而释放从图像分配的所有内存。

这使您可以完全控制图像缓存。 -imageNamed: 使用自己的缓存机制,您无法控制何时何地释放分配的内存。

你也应该试试这个方法。

编辑: 这是我的 UIImage 类扩展 (https://gist.github.com/2880240),用自定义缓存覆盖 -imageNamed:,收到内存警告后,您可以简单地使用 [UIImage freeCache]。还包括在将所有图像存储在缓存中时设置自动释放的能力,即:[UIImage setShouldAutorelease:TRUE]。默认为 FALSE。

试一试,希望对你有帮助!

关于iphone - 使用 [UIImage imageNamed] 时未释放内存警告的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906386/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap