【发布时间】:2014-06-03 07:25:47
【问题描述】:
我正在使用here 找到的解决方案来使用 CIGaussianBlur 模糊图像。但是,我遇到了无法解决的内存泄漏问题。我最初使用不使用 CIContext 作为属性,但认为这可能是无济于事的问题。我也使用了输出图像中的 CGRect,但更改了它以尝试关闭泄漏,再次没有工作。
我相信我正在释放我需要的所有内容(ARC 已打开),那么可能导致内存泄漏的原因是什么?
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];
CGImageRef cgimage = [image CGImage];
[gaussianBlurFilter setValue:[CIImage imageWithCGImage:cgimage] forKey:kCIInputImageKey];
[gaussianBlurFilter setValue:@10 forKey:kCIInputRadiusKey];
CIImage *outputImage = [gaussianBlurFilter outputImage];
if (imageContext == nil) {
imageContext = [CIContext contextWithOptions:nil];
}
CGImageRef cgimg = [imageContext createCGImage:outputImage fromRect:CGRectMake(0.0, 0.0, 25.0, 25.0)];
UIImage *blurredImage = [UIImage imageWithCGImage:cgimg];
pictureIncognito.image = blurredImage;
pictureIncognito.layer.cornerRadius = pictureIncognito.frame.size.width / 2.0;
pictureIncognito.layer.masksToBounds = YES;
pictureIncognito.layer.borderWidth = 1.0;
pictureIncognito.layer.borderColor = [[UIColor whiteColor] CGColor];
CGImageRelease(cgimage);
CGImageRelease(cgimg);
【问题讨论】:
-
当你在 Instruments.app 下运行它时,你应该很快就能找到泄漏的原因。
-
-
对不起,一定是错过了——太小了,没有上下文! ;-) 我的错。
-
嗨,你有答案吗?我也面临同样的问题。可以给我答案吗?
标签: ios objective-c xcode memory-leaks