【问题标题】:UIImage CachingUIImage缓存
【发布时间】:2015-11-13 18:02:55
【问题描述】:

UIImage imageNamed 缓存图像是有据可查的。更新版本的 iOS 的趋势是使用资产文件来简化所有设备的所有 @2x 和 @3x 图像。

但是为了避免缓存图像并充分利用图像的内存,到目前为止,我会使用 imageWithData 之类的方法。但是这些方法不适用于迄今为止我所理解的资产文件。因为我在捆绑包上找不到像 pathForResource 这样的方法,它对资产图像正常工作。这是 iOS 上的一个缺点,还是有一个很好的解决方法,或者它只是代表我的简单 n00b ness?

在我的一个项目中,我注意到大量内存消耗只是因为在某些启动屏幕上使用的一些图像仍然被缓存,礼貌 imageNamed:

如何解决这个问题,即继续使用资产集图像的简单性和易用性,同时避免使用 imageNamed 进行缓存:

谢谢

【问题讨论】:

    标签: ios caching uiimage


    【解决方案1】:

    虽然UIImage's imageNamed 缓存了图像,但一些旧论坛继续分发这些信息。在早期的 OS 版本中,imageNamed 有一个 memoryLeak,这个问题早就修复了。

    当应用收到内存警告时,缓存被清除。所以你可以继续使用它。

    【讨论】:

    • 感谢您的信息,但我担心的是应用程序尚未收到内存警告但分配了大量缓存的内存...查看或动画效果。本质上,正如我所提到的,我想尽可能避免缓存,但对于使用 imageNamed: 的滚动视图或表格视图单元格之类的地方,但同时避免在使用资产集时一直使用 pathForResource 来使用缓存。这可能吗?也许我的问题可以改写为对资产中的图像使用 pathForResource
    • @0x6d6e 1. 请记住,如果您的应用程序占用了大量内存,事情不会变得迟缓。如果对 TableView 或动画有性能影响,则可能表示计算密集型或与其他地方相关的一些 I/O。如果你占用的内存接近临界水平,(操作系统可能认为动画可能会变得迟缓),它会发送内存警告,如果内存持续/超过,它会杀死它。 2. 不过,我会在短时间内更新我对 pathForResource 位的答案。
    • 谢谢 期待您的回复。现在我的应用程序因 Xcode 上的清除警告/对话框而终止,该警告表明内存消耗过多,仪器显示 UIIMage 是罪魁祸首。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多