在大约2k行代码中,静态分析器只有一个问题,因此:
spellDetailModalViewController *detailVC = [[spellDetailModalViewController alloc]init];
UIImage *tempImage = self.spellImageView.image;
CGRect newSize = CGRectMake(0.0, 0.0, 320.0, 305.0);
CGImageRef temp = CGImageCreateWithImageInRect([tempImage CGImage], newSize);
UIImage *passingImage = [UIImage imageWithCGImage:temp];
temp=nil;
抱怨CGImageRef'temp''可能'被泄露,并且保留计数为+1。将图像传递给模态ViewController后,我将其设置为nil。显然,在ARC下,我不能在ARC下调用[temp release]。不知道该怎么办。 非常感谢。
答案 0 :(得分:4)
您需要CGImageRelease
temp
CGImageRef temp = CGImageCreateWithImageInRect([tempImage CGImage], newSize);
UIImage *passingImage = [UIImage imageWithCGImage:temp];
CGImageRelease(temp);
来自CGImageCreateWithImageInRect
Apple文档:
生成的图像保留对原始图像的引用,这意味着您可以在调用此函数后释放原始图像。
答案 1 :(得分:0)
CGImage
是Core Graphics
对象,ARC无法处理核心库。因此,您应该使用CGImageRelease
或更好的方式传递该警告,请使用imageWithCIImage
这样的方法;
CIImage *fooImage = [CIImage imageWithCGImage:temp.CGImage];
UIImage *passingImage = [UIImage imageWithCIImage:fooImage];