gpt4 book ai didi

objective-c - CGImageRef 内存泄漏

转载 作者:太空狗 更新时间:2023-10-30 03:34:14 25 4
gpt4 key购买 nike

我在使用返回 CGImageRef 的自定义方法时发生内存泄漏。我无法正确释放“cgImage”,因为我必须归还它。我该怎么办?

- (CGImageRef)rectRoundedImageRef:(CGRect)rect radius:(int)radius
{
CGSize contextSize = CGSizeMake(rect.size.width, rect.size.height);
CGFloat imageScale = (CGFloat)1.0;
CGFloat width = contextSize.width;
CGFloat height = contextSize.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, width * imageScale, height * imageScale, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);
// Draw ...
// Get your image
CGImageRef cgImage = CGBitmapContextCreateImage(context);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
//CGImageRelease(cgImage); //If I release cgImage the app crashes.
return cgImage;
}

最佳答案

cgImage 由您的方法拥有,您需要返回它并让调用者负责通过 CFRelease 释放它。

您还可以返回包裹在 UIImage 实例中的 CGImage,如下所示:

UIImage *image = [UIImage imageWithCGImage:cgImage];
CFRelease(cgImage); //cgImage is retained by the UIImage above
return image;

关于objective-c - CGImageRef 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com