我的应用允许用户使用照片框架编辑照片。我看到一些崩溃报告,并且在生成输出图像时出现崩溃,但我不确定问题出在哪里。此崩溃发生在多个硬件设备和多个版本的iOS 9上,包括最新的9.1。我的应用程序的最后一次调用是CGImageDestinationFinalize
,以便创建已编辑的图像NSData
。崩溃报告显示在崩溃发生之前,CoreImage空间中的调用将继续显示在GLTextureManager中。
这可能是内存不足的问题吗?你看到了这个问题吗?怎么解决这个问题?
来自PhotoEditor.swift
的{{1}}内部来自fullImageOutput
的相关代码,该代码在editSingleAsset
的后台队列中运行:
QOS_CLASS_UTILITY
崩溃报告详情:
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
}
}
答案 0 :(得分:0)
这是iOS 9中已知的问题,已在iOS 10中解决。源代码没有任何问题。