iphone开发:当我分析我的应用程序时,我有潜在的泄漏问题

时间:2012-11-02 11:29:16

标签: iphone objective-c ios memory-leaks cgimageref

当我分析我的iPhone应用程序时,我有一个蓝色箭头警告,上面写着:

potential leak of an object stored into pauseImgBg

我只是从地图集裁剪部分图像并将其放入pauseMenuIV imageView

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 个答案:

答案 0 :(得分:3)

你可能需要通过

发布它
CGImageRelease(pauseImgBg);

答案 1 :(得分:2)

CGImageCreateWithImageInRect返回保留计数为+1的CGImageRef。所以你必须发布收到的CGImageRef。

CGImageRelease(pauseImgBg);

最后。有空的时候尝试阅读documentation。它可以帮助您隔离这些案例。来自文档

  

Core Foundation函数的名称表明您拥有的时间   返回的对象:

     
      
  • 在名称中嵌入“创建”的对象创建功能
  •   
  • 在名称中嵌入“复制”的对象复制功能。
  •   
     

如果你拥有一个物品,你有责任放弃   完成后的所有权。

来自CGImageCreateWithImageInRect本身的文件

  

生成的图像保留对原始图像的引用   表示您可以在调用此功能后释放原始图像。