这可能是内存不足的问题吗?你看到这个问题吗?如何解决?
PhotoEditor.swift的相关代码,内部函数fullimageOutput,从editSingleAsset调用,后台队列中运行QOS_CLASS_UTIliTY:
let outputPhoto = //the generated CIImage that is the edited photo to be saved to disklet 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 }}
崩溃报告的可视化:
崩溃报告详情:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000145201ac0Triggered by Thread: 7Thread 7 name:Thread 7 Crashed:0 libsystem_platform.dylib 0x0000000199e36220 _platform_memmove + 48 (memmove.s:220)1 CoreImage 0x0000000184e86e4c CI::GLTextureManager::texture_for_CGImage(CGImage*,CI::PixelFormat) + 372 (context-gles.cpp:910)2 CoreImage 0x0000000184e8a310 CI::GLContext::bind_textures(CI::SerialObjectPtrArray*,CI::Kernel*) + 240 (context-gles.cpp:3060)3 CoreImage 0x0000000184e899e0 CI::GLContext::render_apply_node(CI::Node const*,bool) + 160 (context-gles.cpp:2699)4 CoreImage 0x0000000184e897fc CI::GLContext::recursive_render(CI::Node*,bool) + 912 (context-gles.cpp:2379)5 CoreImage 0x0000000184e8a788 CI::GLContext::render(CI::Node*) + 180 (context-gles.cpp:2880)6 CoreImage 0x0000000184e9bfec CI::_get_bitmap(CI::Context*,CI::Image*,CGRect,CGcolorSpace*,CI::BitmaP*) + 676 (render.cpp:2622)7 CoreImage 0x0000000184e9bc9c CI::image_get_bitmap(CI::Context*,CI::BitmaP*,unsigned long) + 664 (render.cpp:2680)8 CoreImage 0x0000000184ea08e8 copyImageBlockSetoptsCallback(voID*,CGImageProvIDer*,CGSize,__CFDictionary const*) + 856 (imageProvIDer.h:143)9 CoreGraphics 0x0000000184af2198 CGImageProvIDercopyImageBlockSet + 220 (CGImageProvIDer.c:500)10 ImageIO 0x0000000185baa41c GetBytesImageProvIDer + 484 (CGImagePixelDataProvIDer.c:382)11 ImageIO 0x0000000185c40440 _CGImagePluginWriteAppleJPEG + 2444 (imageAppleJPEG.c:2785)12 ImageIO 0x0000000185ba3020 CGImageDestinationFinalize + 724 (CGImageDestination.c:2119)13 MyAppnameHere 0x0000000100096468 _TFC11 MyAppnameHere 12PhotoEditor15fullimageOutputfS0_FT_GSqCSo22PHContentEditingOutput_ + 1272 (PhotoEditor.swift:71)14 MyAppnameHere 0x0000000100113310 _TFFFFFC11 MyAppnameHere 36PhotosPickerCollectionVIEwController16editSingleAssetFS0_FCSo7PHAssetT_U_FT_T_U0_FTGSqCSo21PHContentEditinginput_GVSs10DictionaryCSo8NSObjectPSs9AnyObject___T_U_FT_T_U_FT_T_ + 172 (PhotosPickerCollectionVIEwController.swift:851)15 libdispatch.dylib 0x0000000199c296e8 _dispatch_call_block_and_release + 24 (init.c:761)16 libdispatch.dylib 0x0000000199c296a8 _dispatch_clIEnt_callout + 16 (object.m:513)17 libdispatch.dylib 0x0000000199c37b40 _dispatch_root_queue_drain + 2140 (inline_internal.h:1063)18 libdispatch.dylib 0x0000000199c372dc _dispatch_worker_thread3 + 112 (queue.c:4250)19 libsystem_pthread.dylib 0x0000000199e3d470 _pthread_wqthread + 1092 (pthread.c:1990)20 libsystem_pthread.dylib 0x0000000199e3d020 start_wqthread + 4 (pthread_asm.s:191)解决方法 这是iOS 9中已经解决的iOS 9中的已知问题.源代码没有任何问题. 总结
以上是内存溢出为你收集整理的ios – 崩溃CGImageDestinationFinalize全部内容,希望文章能够帮你解决ios – 崩溃CGImageDestinationFinalize所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)