为什么使用 CGImageRef 而不是 CGImage?

Why use CGImageRef not CGImage instead?

我是媒体层和照片层的新手,让我感到困惑的是有很多像 CGImageRefCMSampleBufferRef 这样的对象,我不知道知道为什么 apple 让我们使用像 "XXXRef" 这样的对象而不是像 "XXX" 这样的对象吗?我知道肯定有一些原因,但我不知道,谁能告诉我为什么?


更新: 我的意思是,为什么苹果要我们 CGImageRef 而不是我们自己创建参考 CGImage *theCGImage

其实你应该问问Core Foundation的作者=)

CGImage 是一个 C 结构体。这意味着,每次作为参数或 return 值传递时都会复制它。或者,甚至,被分配给某个变量。 我想像 CGImage 这样的东西是非常大的东西。所以,简单地传递一个指向它的指针是更好的主意。

我认为,这个决定背后的真正原因要复杂得多,并且与引用计数器、CF 和 Foundation 对象之间的桥接等有关