3

在大约 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]。不知道该怎么办。非常感谢帮助。

4

2 回答 2

4

你需要CGImageRelease temp

CGImageRef temp = CGImageCreateWithImageInRect([tempImage CGImage], newSize);
UIImage *passingImage = [UIImage imageWithCGImage:temp];
CGImageRelease(temp);

来自CGImageCreateWithImageInRect苹果文档:

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

于 2012-01-08T20:42:24.757 回答
0

CGImage是一个Core Graphics对象,ARC 不能处理核心库。所以你应该使用CGImageRelease或更好的方法来传递那个警告,使用imageWithCIImage这样的方法;

CIImage *fooImage = [CIImage imageWithCGImage:temp.CGImage];
UIImage *passingImage = [UIImage imageWithCIImage:fooImage];
于 2014-07-15T13:03:24.400 回答