我正在尝试从iOS中的图像资源中读取ARGB像素。为此,我需要一个CGImageRef
我可以使用它CGDataProvider
。我的问题是,如果我使用:
CGImageRef
CGImageRef cg = [[UIImage imageNamed: Path] CGImage];
我最终是否需要致电CGImageRelease(cg)
?如果我不打电话给CGImageRelease
,我会有内存泄漏吗?
我遇到的另一个问题是第二次读同一个文件会返回一个空图像,我怀疑这可能是因为我没有第一次调用CGImageRelease
。
答案 0 :(得分:7)
只有当您使用CGImageRelease
,CGImageCreate
或Copy
时,您才需要致电Retain
(或者使用创建,复制,保留等任何此类相关方法。例如: - CGBitmapContextCreateImage
)。在这种情况下,您不必这样做,因为您没有进行任何创建,复制或保留。
答案 1 :(得分:1)
不,CGImage将与UIImage的生命周期绑定
遵循cocoa的“创建规则”:您只需要释放您拥有的内容(来自名为new *,copy *,retain返回所有权的方法中的对象)
另外,来自CF的任何对象遵循CF创建规则(仅来自名为Create *,Copy *,Retain的方法中的对象)