当我分析我的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];
可能是什么问题?
感谢。
答案 0 :(得分:3)
你可能需要通过
发布它CGImageRelease(pauseImgBg);
答案 1 :(得分:2)
CGImageCreateWithImageInRect
返回保留计数为+1的CGImageRef。所以你必须发布收到的CGImageRef。
CGImageRelease(pauseImgBg);
最后。有空的时候尝试阅读documentation。它可以帮助您隔离这些案例。来自文档
Core Foundation函数的名称表明您拥有的时间 返回的对象:
- 在名称中嵌入“创建”的对象创建功能
- 在名称中嵌入“复制”的对象复制功能。
如果你拥有一个物品,你有责任放弃 完成后的所有权。
来自CGImageCreateWithImageInRect本身的文件
生成的图像保留对原始图像的引用 表示您可以在调用此功能后释放原始图像。