を作成するinitWithBitmapDataPlanesを使用したとき、私はそうのような24ビットのRGBデータのunsigned char型の*からNSImageではを作成しています:ココアのメモリ管理NSImageでは
NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes:(unsigned char **)&data
pixelsWide:gWidth
pixelsHigh:gHeight
bitsPerSample:8
samplesPerPixel:3
hasAlpha:NO
isPlanar:NO
colorSpaceName:NSCalibratedRGBColorSpace
bytesPerRow:gWidth*3
bitsPerPixel:24];
NSImage *img = [[NSImage alloc] initWithSize:NSMakeSize(gWidth, gHeight)];
[img addRepresentation:bitmap];
私がいる問題は、私は後でより多くのものを書いていますということです私はNSImageがそれをコピーしていないことを知っています。私は後ですべての0を自分のデータバッファに書き込むと、画像はすべて黒くなるので、私はそれを言う。
私はObjective Cと闘っているので、これは簡単です。
私はそれが物事がうまく動作しますが、明らかにリークし、その後「データ」のローカルコピーを作成し、決して自由場合:
unsigned char *copy_of_data = new unsigned char[len];
memcpy(copy_of_data, data, len);
はどのようにいずれかのことができます。
は、(1)initWithBitmapDataPlanesを作成しますそれ自身のコピーとハンドルの割り当て解除?
(2)画像が必要なくなった後、適切な場合はデータを自分自身で解放しますか?
Ooh!私は逃しました。私はそれに渦を巻いて、それがうまくいくかどうかを見ます。 – spartygw
これは完璧に動作します!どうもありがとうございました。 – spartygw