2012-11-02 47 views
0

當我分析一下我的iPhone應用程序我有一個藍色箭頭警告它說:iPhone開發:當我分析我的應用我有潛在的泄漏問題

potential leak of an object stored into pauseImgBg 

我只是從一本地圖冊裁切部分圖像,並把它進入pauseMenuIVimageView

CGImageRef pauseImgBg = CGImageCreateWithImageInRect([UIImage imageNamed:@"atlas.png"].CGImage, CGRectMake(1, 1, 640.0f, 960.0f)); 
pauseMenu = [UIImage imageWithData:UIImagePNGRepresentation([UIImage imageWithCGImage:pauseImgBg])];// I have the blue arrow in this line 
[pauseMenuIV setImage:pauseMenu]; 

可能是什麼問題?
謝謝。

回答

2

CGImageCreateWithImageInRect返回保留計數爲+1的CGImageRef。所以你必須釋放收到的CGImageRef。

CGImageRelease(pauseImgBg); 

最後。有空的時候試試看documentation。它會幫助你隔離這些案件。從技術文檔

核心基礎功能,具有指示當你擁有一個 返回對象名稱:

  • 已經「創建」嵌入名稱
  • 對象的重複數據刪除功能,對象創建函數在名稱中嵌入「複製」。

如果您擁有一個物品,那麼您有責任在完成後放棄 所有權。

而且從CGImageCreateWithImageInRect本身

所得圖像的文檔保留原始圖像,其 意味着你可以調用此函數後釋放原始圖像的參考。

3

你可能需要通過

CGImageRelease(pauseImgBg); 
+0

釋放它甚至即時通訊使用ARC還需要手動釋放呢? @AppleDelegate –