因此,过去几天我一直在努力修补内存泄漏,同时尝试使用核心图像模糊图像。我已经将内存泄漏追溯到这段代码:
- (void) blurImage {
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"Captured Image");
@autoreleasepool {
CIImage *inputImage = [[CIImage alloc] initWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:inputImage forKey:@"inputImage"];
[filter setValue:[NSNumber numberWithFloat:10.0] forKey:@"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
blur_image.image= [[UIImage alloc] initWithCIImage:result];
}
NSLog(@"blurred Image");
}
这段代码做了两件事,它首先捕获当时屏幕的屏幕截图,然后模糊该图像并将其设置为我的超级视图背景中的图像视图。
我正在使用选择器调用此代码块以在后台运行
- (void) viewDidAppear:(BOOL)animated{
SEL blur = @selector(blurImage);
[self performSelectorInBackground:blur withObject:nil];
}
我收到与此代码相关的 3 个内存泄漏
这是我提到的泄漏: CoreImage CI::GLESContext::program_for_name(__CFString const*)
我对自己做错了什么感到困惑,有人可以启发我吗?