我有以下方法UIImageManipulation.m
:
+(UIImage *)scaleImage:(UIImage *)source toSize:(CGSize)size
{
UIImage *scaledImage = nil;
if (source != nil)
{
UIGraphicsBeginImageContext(size);
[source drawInRect:CGRectMake(0, 0, size.width, size.height)];
scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return scaledImage;
}
我用不同的观点来称呼它:
imageFromFile = [UIImageManipulator scaleImage:imageFromFile toSize:imageView.frame.size];
(imageView是之前分配的一个UIImageView)
这在我的代码中效果很好。我完美地调整了图像的大小,并且抛出了零错误。我也没有在构建->分析下弹出任何东西。但是第二次我打开NSZombieEnabled
调试另一个EXC_BAD_ACCESS
问题时,代码就中断了。每一次。我可以NSZombieEnabled
关闭,代码运行良好。我打开它,然后砰的一声。破碎的。我注释掉这个电话,它又可以工作了。每次,它都会在控制台中给我一个错误:-[UIImage release]: message sent to deallocated instance 0x3b1d600
. 如果 `NSZombieEnabled 关闭,则不会出现此错误。
有任何想法吗?
- 编辑 -
好吧,这要死我了。我到处都设置了断点,但我仍然无法抓住这个东西。这是我调用该scaleImage
方法时的完整代码:
-(void)setupImageButton
{
UIImage *imageFromFile;
if (object.imageAttribute == nil) {
imageFromFile = [UIImage imageNamed:@"no-image.png"];
} else {
imageFromFile = object.imageAttribute;
}
UIImage *scaledImage = [UIImageManipulator scaleImage:imageFromFile toSize:imageButton.frame.size];
UIImage *roundedImage = [UIImageManipulator makeRoundCornerImage:scaledImage :10 :10 withBorder:YES];
[imageButton setBackgroundImage:roundedImage forState:UIControlStateNormal];
}
另一种方法UIImageManipulator
(makeRoundCornerImage
_
不过,这与这种方法有关。必须。如果我将其注释掉,它会很好用。如果我把它留在里面,错误。但它不会在NSZombieEnabled
关闭时抛出错误。