0

一部のOSXコードをiOSに移植しており、CIImageのバイトにアクセスする必要があります。OSXバージョンはNSBitmapImageRepでこれを行いますが、iOSではいくつかのフープを飛び越える必要があります。

これが私が実行しようとしているコードです

CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);

CGRect extent = [image extent];
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true);

CFRelease(data);
//CGDataProviderRelease(provider);

期待どおりに動作しますが、しばらくするとアプリがクラッシュします。理由はわかりません。私はメモリリーク/アウトオブバウンズメモリを推測しています。すべてが正しく解放されていることがわかる限り...これらの行をコメントアウトしても、何もクラッシュしません。コメントすると、アプリでCGDataProviderReleaseがすぐにクラッシュします。

4

1 に答える 1

2

CFRelease(cgImage)が必要だと思います-「create」を使用して作成しましたか?

于 2012-07-26T19:25:06.463 に答える