我将使用CGImageRef过滤图像。当我应用" CIPhotoEffectChrome"然后导航到后面的屏幕,我的应用程序将崩溃...并且日志显示为EXC_BAD_ACCESS。
这是代码:::
- (UIImage *)CIPhotoEffectChrome {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^(void){
});
});
CIContext *context = [CIContext contextWithOptions:nil]; // 1
CIImage *image = [CIImage imageWithCGImage:self.CGImage]; // 2
CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectChrome"]; // 3
[filter setValue:image forKey:kCIInputImageKey];
CIImage *result = [filter valueForKey:kCIOutputImageKey]; // 4
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
UIImage *filterImage=[UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return filterImage;
}
请帮帮我!!!!!
答案 0 :(得分:1)
你需要删除CGImageRelease(cgImage)并再次运行,因为我们没有明确地创建它。
在你的情况下,当从当前视图控制器向后移动时发生崩溃,这意味着你通过延迟加载或其他一些Web服务获取图像,因此你应该将委托设置为nil或者如果委托对象被声明为强或保留应该是弱者。