我在以下代码段的最后一行发布EXC_BAD_ACCESS
时收到newImage
:
UIGraphicsBeginImageContext(newSize); [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self setImageToSave:newImage]; [newImage release];
我假设newImage
在上一行调用时被释放。如果是这样,为什么它会以setImageToSave
方法发布?
答案 0 :(得分:4)
看起来像这一行:
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
正在创建一个自动释放的对象。在该行之间和此行之前:
[newImage release];
..它正在自动释放。您正试图释放一个自动释放(并且已经发布)的对象,这就是您收到该错误的原因。删除版本。至于这一行:
[self setImageToSave:newImage];
如果您需要为任何版本保存newImage,您应该保留在此处或在setImageToSave方法中。请记住,由于您手动保留它,因此您需要在同一方法或其他地方的某个时刻将其与版本匹配。