当我分析我的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];


可能是什么问题呢 ?
谢谢。

最佳答案

CGImageCreateWithImageInRect返回保留计数为+1的CGImageRef。因此,您必须释放改版的CGImageRef。

CGImageRelease(pauseImgBg);


到底。如果有时间,请尝试阅读documentation。它将帮助您隔离此类情况。从文档


  Core Foundation函数的名称指示您何时拥有
  返回的对象:
  
  
  名称中嵌入了“创建”的对象创建函数
  名称中嵌入了“复制”的对象复制功能。
  
  
  如果您拥有物品,则有责任放弃
  完成后拥有所有权。


并来自CGImageCreateWithImageInRect本身的文档


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

10-08 02:28