【发布时间】:2014-05-31 01:56:12
【问题描述】:
我有一个函数:
- (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 而崩溃
当我删除该行时它似乎可以工作 - 但这不会导致内存泄漏吗?
【问题讨论】:
-
这一行是否以某种方式解除了原始 UIImage 的分配? (图像参数)
-
只有在使用 CGImageCreate、Copy 或 Retain 时才需要调用 CGImageRelease。你不需要在你的情况下调用 CGImageRelease
标签: ios exc-bad-access cgimage