CGImageRef cg = CGImage]; 需要CGImageRelease(cg)’?

我试图从iOS中的图像资源中读取ARGB像素。 为此,我需要一个CGImageRef我可以用来获取它的CGDataProvider 。 我的问题是,如果我使用以下方法创建CGImageRef

 CGImageRef cg = [[UIImage imageNamed: Path] CGImage]; 

我最终需要调用CGImageRelease(cg)吗? 如果我不调用CGImageRelease ,我会有内存泄漏吗?

我遇到的另一个问题是第二次读取同一个文件会返回一个空图像,我怀疑这可能是因为我没有第一次调用CGImageRelease

只有在使用CGImageCreateCopyRetain时才需要调用CGImageRelease (或者任何与create,copy,retain相关的方法。例如: – CGBitmapContextCreateImage )。 在这种情况下,您不必这样做,因为您没有进行任何创建,复制或保留。

不,CGImage将受限于UIImage的生命周期

遵循cocoa的’创建规则’:您只需要释放您拥有的内容(来自名为new *,copy *,retain返回所有权的方法中的对象)

另外,来自CF的任何对象遵循CF创建规则(仅来自名为Create *,Copy *,Retain的方法中的对象)