当我分析我的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本身的文档
生成的图像保留了对原始图像的引用,
表示您可以在调用此函数后释放原始图像。