iOS - 使用CGImageRetain和CGImageRelease进行图像管理

时间:2013-05-01 17:50:04

标签: ios objective-c memory-management

我的iOS应用程序中有Obj-C代码:

CGImageRef cgImage = CGImageRetain([self imageFromSampleBuffer:sampleBuffer]);
if(_delegate) {
  [_delegate sessionWithPresentedFrame:[UIImage imageWithCGImage:cgImage]];
}
CGImageRelease( cgImage );

我从博客中复制了这段代码,我需要了解一下内存管理(我目前没有)。所以我希望有人可以帮助我。

现在,cgImage显然已被保留。然后传递给[_delegate sessionWithPresentedFrame:]

然后cgImage被释放。我的问题是,在这里发布cgImage是否安全。由于我将其传递给[_delegate sessionWithPresentedFrame:],因此在[_delegate sessionWithPresentedFrame:]内使用时会释放它吗?

我应该删除此处的CGImageRelease( cgImage );并在cgImage完成[_delegate sessionWithPresentedFrame:]之后添加吗?

或者我有倒退吗?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:3)

很安全。如果方法sessionWithPresentedFrame:确实需要保留图像,那么它会做。这部分代码不是我们的问题。