【问题标题】:App crash using CGImageRef使用 CGImageRef 的应用程序崩溃
【发布时间】:2015-02-20 07:24:42
【问题描述】:

我将使用 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;
}

请帮帮我!!!!!!

【问题讨论】:

  • 请提供代码中发生崩溃的确切位置以及堆栈跟踪或崩溃日志。
  • 在这一行,CGImageRef cgImage = [context createCGImage:result fromRect:extent];
  • 请告诉我们确切的例外情况,以便我们为您提供帮助。结果返回 nil 吗?

标签: iphone cgimageref


【解决方案1】:

您需要删除 CGImageRelease(cgImage) 并再次运行,因为我们没有显式创建它。

在您的情况下,从当前视图控制器移回时会发生崩溃,因此这意味着您正在通过延迟加载或其他一些 Web 服务获取图像,因此您应该将委托设置为 nil,或者如果委托对象被声明为强或保留那应该很弱。

【讨论】:

  • 没有。 createCGImage:fromRect: 返回 +1 保留图像。
猜你喜欢
  • 2017-11-10
  • 2012-08-18
  • 2012-02-12
  • 2014-03-18
  • 2014-11-14
  • 2018-12-05
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多