本文介绍了以下图形代码被iOS ARC标记为Leak的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 (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%泄漏。

The line CGContextDrawImage(currentContext, drawRect, CGImageCreateWithImageInRect (_image.CGImage, cropArea)) tagged 100% leakage.

我需要做与CG相关的任何事情吗?

Are there anything I need to do CG related release myself?

谢谢

推荐答案

我相信ARC仅适用于可可对象,

I believe that ARC only works for Cocoa objects, it doesn't work for Core* frameworks.

要修复泄漏,您需要更改为以下内容:

To fix your leak you need to change to the following:

CGImageRef myImage = CGImageCreateWithImageInRect (_image.CGImage, cropArea);
CGContextDrawImage(currentContext, drawRect, myImage);
CFImageRelease(myImage);

根据图像的大小,这可能是一个很大的泄漏。

That could be a pretty big leak, depending on the size of your images.

这篇关于以下图形代码被iOS ARC标记为Leak的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 17:33