1

直觉上,我一直觉得使用缓存 UIImage 初始化 ( imageNamed) 不仅仅是从磁盘加载时节省时间。我认为这也是一个内存问题:不是有几个UIImage具有相似数据的不同实例,而是将数据加载到内存中一次。

使用会imageNamed导致更有效的内存使用吗?

4

1 回答 1

2

是的,它也可以提高内存使用效率。

根据imageNamed:文档:

此方法在系统缓存中查找具有指定名称的图像对象,如果存在则返回该对象。如果匹配的图像对象尚未在缓存中,则此方法从指定文件加载图像数据,缓存它,然后返回结果对象。

这里的关键是它“在系统缓存中查找图像对象”。

而且,为了确认,我制作了一个带有五个图像视图和一个按钮的示例项目。当调用imageNamed五次来设置所有五次时,我的 Instruments 堆增加了 19.5k。使用imageWithContentsOfFile:,它增长了 66.5k。

于 2012-12-27T00:52:32.063 回答