差异b / w imageNamed和imageWithContentsOfFile

在ObjectiveC中,b / w imageNamedimageWithContentsOfFile有什么区别

imageNamed: imageNamedcaching是你的图像,你失去了对内存的控制 – 不能保证释放对象实际上会释放图像,但是在caching时会提供更快的图像加载速度。 如果您正在使用Interface Builder,并且在图像视图属性中设置图像,那么也等于imageNamed方法。 当应用程序运行时,图像将被立即caching

imageWithContentsOfFile: imageWithContentsOfFile不会caching图像,并且对内存更友好,但因为它不会caching图像,所以加载速度要慢得多。 imageWithContentsOfFile:要求你把完整的path。 我不明白为什么imageNamed:不会被推荐,除了你不能访问应用程序包之外的文件。

有一个很好的链接,这解释了这两种方法与文件的内容的名称与图像的差异

从这个链接

UIImage的方法imageNamed:和imageWithContentsOfFile:做一些稍微不同的事情。 imageNamed将图像加载到特殊的系统caching中,然后使用该图像path的未来调用将返回caching中的图像,而不是从磁盘重新加载图像。 imageWithContentsOfFile只是在你指定的path下载入图像,但是没有caching。 对同一图像多次调用imageWithContentsOfFile将导致内存中有多个副本。

当发出内存警告时,iOS似乎没有清空caching(当然,或者根本不知道),这可能会导致应用程序因缺less可用内存而终止。 用imageWithContentsOfFile加载的UIImages通过清除图像并在需要时重新加载来响应内存警告,这可以解释为什么你的内存消耗已经消失。

此外,模拟器中的caching看起来比实际的硬件大得多,使用imageNamed的UIImage中遇到的问题和崩溃只发生在设备上。 注意在模拟器上testing!

我可以看到使用imageNamed相同的图像的唯一原因是多次在您的意见。 或者,您可以实现自己的图像caching,并获得您可以控制的caching的好处,如下所述: http : //www.alexcurylo.com/blog/2009/01/13/imagenamed-is-vil /

看看这个链接。