2011-12-23 7 views
1

私はARCが有効なios 5を使用しています。次の例では、メモリリークの警告を受けています...しかし、ARCを使用して以来、私はautoreleaseを使用できません。誰か提案してください。オブジェクトの潜在的なリーク - Xcode - ios5

-(void)coreImageEffect{ 
    CIImage *inputImage = [[CIImage alloc] initWithImage:blurImage.image]; 
    CIFilter *hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"]; 

    [hueAdjust setDefaults]; 
    [hueAdjust setValue:inputImage forKey:@"inputImage"]; 
    [hueAdjust setValue:[NSNumber numberWithFloat: 3.4f] 
    forKey:@"inputAngle"]; 

    CIImage *outputImage = [hueAdjust valueForKey:@"outputImage"]; 
    CIContext *context = [CIContext contextWithOptions:nil]; 

    blurImage.image = [UIImage imageWithCGImage: 
    [context createCGImage:outputImage 
    fromRect:outputImage.extent]]; 

    } 

私は[CIContext Autorelease]を使用できません。 問題はCIContextを表示しています。 "メソッドは+1保持カウントを持つコアファンデーションオブジェクトを返します"

お勧めします。

答えて

11

-createCGImage:…はObjective-Cオブジェクトではなく、ARCによって管理されないCore Graphicsオブジェクトを返します。だから、それを手動でCGImageReleaseする必要があります。

CGImageRef cgImage = [context createCGImage:outputImage 
            fromRect:outputImage.extent]; 
blurImage.image = [UIImage imageWithCGImage:cgImage]; 
CGImageRelease(cgImage); 

をなぜ直接+imageWithCIImage:を使用していませんか?

blurImage.image = [UIImage imageWithCIImage:outputImage]; 
+0

thnks。私のProbは解決しました! –

+0

もう1つ質問Kenny:自分のプロジェクトをiTunesの市場にアップロードする前に、自分のシミュレータでテストするために自分のiPhoneのアプリを私のfrndsに送りたいと思っています。どうすればいいですか? ios 5、xcode 4.2 このxcodeには.ipaファイルを送信するオプションがないようです。 アドホックな配布は唯一のものだと私は言っていましたが、同じことをやる方が簡単です。 –

+0

@RanajoyRoy:Ad Hocを使いたくない場合は、ソースコードを送信できます。 .ipaについては、http://stackoverflow.com/questions/5265292/xcode-4-create-ipa-file-instead-of-xcarchiveを参照してください。 – kennytm

関連する問題