imageNamed 采用了缓存机制,如果缓存中已加载了图片,直接从缓存读就行了,每次就不用再去读文件了,效率会更高 。
imageWithContextOfFile 加载,图片是不会缓存的,加载速度慢。
大量使用 imageNamed 方式会在不需要缓存的地方额外增加开销 CPU 的时间。即使生成的对象被 autoReleasePool 释放了,这份缓存也不释放,如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存。
当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用 imageWithContentsOfFile 是最为经济的方式,这样不会在 UIImage 元素较多的情况下,CPU 被逐个分散在不必要缓存上浪费过多时间。