3

いくつかの2k行のコードのうち、静的アナライザーには1つの問題しかありません。したがって、次のようになります。

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では[temprelease]を呼び出すことはできません。何をすべきかわからない。よろしくお願いします。

4

2 に答える 2

4

必要があるCGImageRelease temp

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

CGImageCreateWithImageInRectAppleドキュメントから:

結果の画像は元の画像への参照を保持します。つまり、この関数を呼び出した後に元の画像を解放できます。

于 2012-01-08T20:42:24.757 に答える
0

CGImageCore Graphicsオブジェクトであり、ARC はコア ライブラリを処理できません。したがってCGImageRelease、その警告を渡すには、またはより良い方法を使用する必要がありimageWithCIImageます。そのような方法を使用してください。

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