CGImageRef cg = [[UIImage imageNamed: Path] CGImage];需要CGImageRelease(cg)'?



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

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

我最终需要打电话给CGImageRelease(cg)吗?如果我不打电话给CGImageRelease,我会有内存泄漏吗?

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

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

不,CGImage将绑定到UIImage的生命周期

遵循 Cocoa 的"创建规则":您只需要释放您拥有的内容(来自名为 new* 的方法的对象,复制*,保留返回所有权)

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

最新更新