1

フィルタ効果はいくつかの警告を示しますコストのかかるパディング解除操作を実行します!また、画像に適用した後のメモリリークはありますか?

私のコードは:-

        CIImage *imagee = [Filter outputImage];
        CIContext *context = [CIContext contextWithOptions:nil];
        CGImageRef cgImage = [context createCGImage: 
                              imagee fromRect: imagee.extent];
        UIImage *resultUIImage = [[UIImage alloc ]initWithCGImage: cgImage];
        image=resultUIImage; 
        CGImageRelease(cgImage);
        cgImage=nil;
        SaveImage=image;
        [resultUIImage release];
4

1 に答える 1

2

CIImageをリリースしていません。これは、リークの原因である可能性が最も高いです(Cocoa Memory Semanticsでは、クラスメソッドが+0の保持カウントを持つオブジェクトを返す必要があるため、呼び出し元が保持する必要があります)。同時に、画像の高価なフィルタリングを実行しています。ご覧のとおり、画像の行が2 ^ n番目のバイトで終わるように、画像に2、3バイトの余分なバイトが埋め込まれている場合があります。ただし、フィルターをロードするには、iOSで画像のパディングを解除する必要があります。これには、バイトを繰り返し処理してパディングを削除する必要があります。これには時間がかかります。パフォーマンス面で何も影響がない場合は、いつでもバックグラウンドスレッドで描画できます。CIImageまたはUIImageがどれほど安全かはわかりませんが、CoreGraphicsは一般的にスレッドセーフです。

于 2012-05-30T06:32:05.387 に答える