直观地说,我一直觉得使用缓存UIImage初始化(imageNamed
)不仅可以节省从磁盘加载的时间。我认为这也是一个内存问题:这些数据不是拥有几个具有相似数据的UIImage
实例,而是一次加载到内存中。
使用imageNamed
会导致更高效的内存吗?
答案 0 :(得分:2)
是的,它也可以提高内存使用效率。
根据imageNamed:
文档:
此方法在系统缓存中查找具有的图像对象 指定名称并返回该对象(如果存在)。如果匹配 图像对象尚未在缓存中,此方法加载图像 来自指定文件的数据,缓存它,然后返回 结果对象。
这里的关键是它“在系统缓存中查找图像对象”。
而且,为了确认,我制作了一个包含五个图像视图和一个按钮的示例项目。当调用imageNamed
五次以设置所有五个时,我的堆增长了19.5k。使用imageWithContentsOfFile:
,它增长了66.5k。