在我的Xamarin iOS应用程序中,我不断收到需要转换为CGImage实例的CIImage实例。以下是相关代码:
CIContext cicontext = CIContext.FromOptions(null);
CGImage cgimage = cicontext.CreateCGImage(ciimage, ciimage.Extent);
...
cgimage.Dispose();
cicontext.Dispose();
前100个左右的电话可以正常工作。在那之后,我在应用程序中崩溃了。这是堆栈跟踪:
critical: 2 libsystem_platform.dylib 0x21866077 _sigtramp + 42
critical: 3 CoreImage 0x24a352b9 <redacted> + 64
critical: 4 CoreImage 0x24a6c005 <redacted> + 292
critical: 5 CoreImage 0x24a6c237 <redacted> + 18
critical: 6 CoreImage 0x24a4b431 <redacted> + 512
critical: 7 CoreImage 0x24a47d5b <redacted> + 734
critical: 8 CoreImage 0x24a47a55 <redacted> + 52
critical: 9 MyApp 0x00fa4eb4 wrapper_managed_to_native_ObjCRuntime_Messaging_IntPtr_objc_msgSend_IntPtr_intptr_intptr_intptr + 108
critical: 10 MyApp 0x00f41a5c CoreImage_CIContext_FromOptions_Foundation_NSDictionary + 120
critical: 11 MyApp 0x00f41868 CoreImage_CIContext_FromOptions_CoreImage_CIContextOptions + 48
基本上,CIContext.FromOptions
中的某些逻辑会导致崩溃。
现在,我已经使cicontext对象成为一个初始化一次的静态变量。这似乎照顾了崩溃。但是,如果您有任何见解,我将不胜感激。问候。
答案 0 :(得分:0)
对于遇到此问题的人,此修复程序适用于我们:
cicontext = CIContext.FromOptions(null)
一次并保持返回值,作为成员变量或静态变量。CreateCGImage
致电cicontext.ClearCaches()
后。如果不这样做,你最终会耗尽内存。希望这会有所帮助。问候。