为了说清楚这个问题,我们先从最基本的知识开始着手~
Basics
首先,NSImage提供了支持多种格式图像数据进行管理的api, 但是NSImage对被其管理的实际图像数据几乎是一无所知的,这是因为...:大小,颜色空间,图片格式
NSImageRep类也负责图片数据的存取和转换工作: 它知道如何从一个文件中获取图像数据,或者将图像数据写入到一个文件中去.它也会将图片数据进行转换后显示到对应的上下文环境中...对于位图来说,缓存机制与位图数据有关:如果位图的颜色空间/解析度/颜色位深度与显示设备都十分匹配,那么图片可能会直接显示的硬件设备上而不使用缓存;否则NSBitmapImagRep实例就会创建图像缓存数据...,cocoa使用了注册索引的方式,你可以想象图像缓存就是一个仓库,里面保存了很多图像缓存数据, 而注册索引就像是这个仓库的目录,这样便于快速的获取指定的物品....需要注意的是, 对于NSImage对象,可以使用setName:这个方法将其添加到cocoa的注册索引中,这对那些动态创建的NSImage对象十分有用.