2013-05-01 54 views
0

圖片管理我的OBJ - C的代碼在我的iOS應用:iOS版 - 與CGImageRetain和CGImageRelease

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:]嗎?

或者我有這個倒退?

任何意見將不勝感激。

+3

你在考慮過於複雜。代碼是正確的。如果需要的話,代表有責任保留UIImage。無論如何,這與cgImage管理是分開的。 – Wain 2013-05-01 17:52:35

回答

3

它是安全的。如果方法sessionWithPresentedFrame:確實需要保留圖像,那麼它會做。不是我們在這部分代碼中的問題。