Objective c 将NSImage转换为NSData

Objective c 将NSImage转换为NSData,objective-c,xcode,macos,image,cocoa,Objective C,Xcode,Macos,Image,Cocoa,我得到的图像是这样的: imageG = [[[NSImage alloc] initWithSize:NSMakeSize(imageN.size.width, imageN.size.height)] autorelease]; [imageG addRepresentation:[NSCIImageRep imageRepWithCIImage:result]]; NSData *imgData = [imageG TIFFRepresentation]; 结果真的很好。所以我认为没

我得到的图像是这样的:

imageG = [[[NSImage alloc] initWithSize:NSMakeSize(imageN.size.width, imageN.size.height)] autorelease];
[imageG addRepresentation:[NSCIImageRep imageRepWithCIImage:result]];
 NSData *imgData = [imageG TIFFRepresentation];
结果真的很好。所以我认为没有错误。然后我尝试将此图像转换为NSData,如下所示:

imageG = [[[NSImage alloc] initWithSize:NSMakeSize(imageN.size.width, imageN.size.height)] autorelease];
[imageG addRepresentation:[NSCIImageRep imageRepWithCIImage:result]];
 NSData *imgData = [imageG TIFFRepresentation];
我得到了一个错误:

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

在那条线上。我的错误在哪里?

你需要
保留你的对象
当你创建它时,当你要求它重新定位数据时,它似乎正在被重新分配

imageG=[[[NSImage alloc]initWithSize:NSMakeSize(imageN.size.width,imageN.size.height)]保留]自动释放]

通常,如果从初始值设定项(而不是工厂方法)创建对象,则应该保留并自动释放它。这样做的好处以及有关内存管理的其他好提示,请访问:

还需要注意的是,
BAD_ACCESS
表示某种内存问题