(UIImage *) cropToSquare:(UIImage *)_image
{
if(_image.size.height < _image.size.width)
{
CGRect drawRect = CGRectMake(0, 0, _image.size.height, _image.size.height);
UIGraphicsBeginImageContext(drawRect.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGRect cropArea = CGRectMake (((_image.size.width - _image.size.height)/2), 0, _image.size.height, _image.size.height);
CGContextTranslateCTM(currentContext, 0.0, _image.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextDrawImage(currentContext, drawRect, CGImageCreateWithImageInRect (_image.CGImage, cropArea));
UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return cropped;
}
else
{
return _image;
}
}
CGContextDrawImage(currentContext,drawRect,CGImageCreateWithImageInRect(_image.CGImage,cropArea))标记了100%的泄漏。
我自己需要做任何与CG相关的发布吗?
感谢
答案 0 :(得分:3)
我相信ARC仅适用于Cocoa对象,它不适用于Core *框架。
要修复泄漏,您需要更改为以下内容:
CGImageRef myImage = CGImageCreateWithImageInRect (_image.CGImage, cropArea);
CGContextDrawImage(currentContext, drawRect, myImage);
CFImageRelease(myImage);
根据图像的大小,这可能是一个非常大的泄漏。