CGImageRef出现EXC_BAD_ACCESS错误

时间:2014-04-16 09:28:53

标签: ios exc-bad-access cgimage

我有一个功能:

- (UIImage *) resizeImage:(UIImage *)image width:(CGFloat)resizedWidth height:(CGFloat)resizedHeight shouldCrop:(BOOL)crop
{
    CGImageRef imageRef = [image CGImage];
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bitmap = CGBitmapContextCreate(NULL, resizedWidth, resizedHeight, 8, 4 * resizedWidth, colorSpace, (CGBitmapInfo) kCGImageAlphaPremultipliedFirst);

    CGContextDrawImage(bitmap, CGRectMake(0, 0, resizedWidth, resizedHeight), imageRef);
    CGImageRef ref = CGBitmapContextCreateImage(bitmap);

    if (crop) // for SmallImage (tableviewcell)
    {
        CGRect cropRect = CGRectMake(0, CGImageGetHeight(ref) * 0.5 - ((float) kIvHeight * 0.5), (float) kIvWidth, (float) kIvHeight);
        ref = CGImageCreateWithImageInRect(ref, cropRect);
    }

    UIImage * result = [UIImage imageWithCGImage:ref];

    CGContextRelease(bitmap);
    CGImageRelease(ref);
    CGImageRelease(imageRef);
    return result;
}

CGImageRelease(imageRef);行导致我的应用与EXC_BAD_ACCESS崩溃 当我删除该行时它似乎工作 - 但这不会导致内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

您不拥有CGImageRef imageRef,因为您使用[image CGImage]获取它,因此您无需发布它。

同时看看这个:How do I release a CGImageRef in iOS