0

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

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

4

2 回答 2

3

你可能需要通过

CGImageRelease(pauseImgBg);
于 2012-11-02T11:33:58.167 回答
2

CGImageCreateWithImageInRect返回一个保留计数为 +1 的 CGImageRef。所以你必须释放收到的CGImageRef。

CGImageRelease(pauseImgBg);

到底。有空时尝试阅读文档。它将帮助您隔离这些情况。从文档

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

  • 在名称中嵌入“创建”的对象创建函数
  • 名称中嵌入了“复制”的对象复制函数。

如果您拥有一个对象,则您有责任在完成该对象后放弃所有权。

并且来自CGImageCreateWithImageInRect本身的文档

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

于 2012-11-02T11:33:28.137 回答