我正在尝试从iOS中的图像资源中读取ARGB像素。为此,我需要一个可以用来获取其CGDataProvider的CGImageRef。我的问题是,如果我使用以下命令创建CGImageRef:
CGImageRef cg = [[UIImage imageNamed: Path] CGImage];我最终是否需要调用CGImageRelease(cg)?如果我不调用CGImageRelease,会不会有内存泄漏?
我遇到的另一个问题是,第二次读取同一个文件会返回一个空图像,我怀疑这可能是因为我第一次没有调用CGImageRelease。
发布于 2012-12-18 04:39:56
只有在使用CGImageCreate、Copy或Retain(或任何与create、copy、retain相关的方法)时,才必须调用CGImageRelease。例如:- CGBitmapContextCreateImage)。在这种情况下,您不必这样做,因为您没有执行任何创建、复制或保留操作。
发布于 2012-12-18 04:38:22
否,CGImage将绑定到‘s镜像的生命周期
遵循可可的“创建规则”:你只需要释放你拥有的东西(来自名为new*,copy*,retain的方法的对象返回一个所有权)
此外,来自CF的任何对象都遵循CF创建规则(仅限来自名为Create*,Copy*,Retain的方法的对象)
https://stackoverflow.com/questions/13921779
复制相似问题