为什么使用CGImageRef而不是CGImage呢?

我是媒体层和照片层的新手,让我困惑的是有很多对象,比如CGImageRefCMSampleBufferRef ,我不知道为什么苹果让我们使用像“XXXRef”这样的对象而不是对象喜欢“XXX”? 我知道必须有一些原因,但我不知道,谁能告诉我为什么?


更新:我的意思是,为什么苹果要我们CGImageRef而不是像CGImage *theCGImage那样自己创建Ref?

实际上,你应该向Core Foundation的作者询问它=)

CGImage是一个C结构。 这意味着,每次作为参数或返回值传递时都会复制它。 或者,甚至被分配给某个变量。 我想像像CGImage这样的东西很重要。 所以,简单地将指针传递给它就好了。

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