2

私はそのようなNSImageを取得します:

imageG = [[[NSImage alloc] initWithSize:NSMakeSize(imageN.size.width, imageN.size.height)] autorelease];
[imageG addRepresentation:[NSCIImageRep imageRepWithCIImage:result]];

そして、結果は本当に良いです。ですから間違いはないと思います。次に、この画像を次のようにNSDataに変換しようとします。

 NSData *imgData = [imageG TIFFRepresentation];

そして、私はエラーが発生しています:

Thread 1: EXC_BAD_ACCESS (code=13, adress=0x0)

その行で。私の間違いはどこにありますか?

4

1 に答える 1

1

オブジェクトを作成するときにオブジェクトを作成する必要がありretainます。データの方向変更を要求するまでに、オブジェクトは再割り当てされているように見えます。

imageG = [[[[NSImage alloc] initWithSize:NSMakeSize(imageN.size.width, imageN.size.height)] retain] autorelease];

通常、ファクトリメソッドではなく初期化子からオブジェクトを作成する場合は、オブジェクトを保持して自動リリースする必要があります。そうすることの利点、およびメモリ管理に関するその他の優れたヒントは、次の場所にあります。自己実装ゲッターが返されたオブジェクトを保持して自動解放する必要があるのはなぜですか。

またBAD_ACCESS、ある種のメモリの問題を示していることに注意してください。

于 2012-07-30T10:43:42.157 に答える