崩溃在CGImageDestinationFinalize上

时间:2015-11-14 04:26:52

标签: ios crash core-image photosframework photokit

我的应用允许用户使用照片框架编辑照片。我看到一些崩溃报告,并且在生成输出图像时出现崩溃,但我不确定问题出在哪里。此崩溃发生在多个硬件设备和多个版本的iOS 9上,包括最新的9.1。我的应用程序的最后一次调用是CGImageDestinationFinalize,以便创建已编辑的图像NSData。崩溃报告显示在崩溃发生之前,CoreImage空间中的调用将继续显示在GLTextureManager中。

这可能是内存不足的问题吗?你看到了这个问题吗?怎么解决这个问题?

来自PhotoEditor.swift的{​​{1}}内部来自fullImageOutput的相关代码,该代码在editSingleAsset的后台队列中运行:

QOS_CLASS_UTILITY

崩溃报告的可视化:

enter image description here

崩溃报告详情:

let outputPhoto = //the generated CIImage that is the edited photo to be saved to disk
let dataRef = CFDataCreateMutable(nil, 0)

if let destination = CGImageDestinationCreateWithData(dataRef, "public.jpeg", 1, nil) {
    struct ContextStruct {
        static var ciContext: CIContext? = nil
    }
    if ContextStruct.ciContext == nil {
        let eaglContext = EAGLContext(API: .OpenGLES2)
        ContextStruct.ciContext = CIContext(EAGLContext: eaglContext)
    }
    let cgImage = ContextStruct.ciContext!.createCGImage(outputPhoto, fromRect: outputPhoto.extent)

    CGImageDestinationAddImage(destination, cgImage, nil)

    if CGImageDestinationFinalize(destination) { //FIXME: CRASH
       //write to disk from dataRef etc
    }

}

1 个答案:

答案 0 :(得分:0)

这是iOS 9中已知的问题,已在iOS 10中解决。源代码没有任何问题。