常用的UIImage加载图片的方式有以下几种:
[UIImage imageNamed:name][UIImage imageWithContentsOfFile:name][UIImage imageWithData:data][UIImage imageWithCGImage:imageRef][UIImage imageWithCIImage:obj]
以上方法中imageNamed:和imageWitData:应用程序会对其自动缓存,不过,它们缓存的实现方式并不相同,后面会有详细说明。除去这两个方法以外剩下的三个方法默认情况下是不会产生缓存的,这三个方法的主要区别在于它们的数据源:imageWithContentsOfFile:从指定文件中创建对象,imageWithCGImage:以CGImageRef来创建对象,imageWithCIImage:以CIImage对象来创建对象。
最后两种方法平时用的相对会少一些,简要解释一下CGImage与CIImage的区别:CGImageRef只能代表位图,如果你需要与bitmap数据打交道,无疑CGImage是非常合适的选择。CGImageRef以CG开头就不难想到CGImageRef的相关操作都需要在Core Graphics中进行,比如混合、遮罩等等。CIImage以CI开头,即Core Image,不难理解CIImage是底层的数据对象,它通常包含了与它相关的图像数据,而不是一个图像。默认情况下,CIImage对象是不会被绘图系统渲染的,除非是得到明确的指令。这种机制(“lazy evaluation”)允许核心绘图系统尽可能高效地运行。CIImage通常被运用在GPU优化图像滤镜算法当中。