MonoTouch绑定库 – EXC_BAD_ACCESS(SIGSEGV)
当我使用Kiip MonoTouch绑定时,我的应用程序仅在我的实时设备上崩溃。 它在模拟器上正常工作。 这是我的堆栈跟踪的一部分:
0 libsystem_c.dylib 0x30eb293c memset$VARIANT$CortexA8 + 52 1 sample 0x002b5738 GC_clear_stack_inner (misc.c:298) 2 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 3 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 4 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 5 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 6 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 7 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 8 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 9 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 10 sample 0x002b574c GC_clear_stack_inner (misc.c:299) 11 sample 0x002b57b8 GC_clear_stack (misc.c:344) 12 sample 0x002b2bd8 GC_malloc_atomic (malloc.c:270) 13 sample 0x0026f374 mono_object_new_ptrfree_box (object.c:4416) 14 sample 0x00102290 wrapper_managed_to_native_object___icall_wrapper_mono_object_new_ptrfree_box_intptr (mscorlib.dll.6.s:92590) 15 sample 0x0001da78 System_Collections_Generic_Dictionary_2_intptr_System_WeakReference_TryGetValue_intptr_System_WeakReference_ (monotouch.dll.6.s:14642) 16 sample 0x0000d1e4 MonoTouch_ObjCRuntime_Runtime_TryGetNSObject_intptr (monotouch.dll.6.s:6354) 17 sample 0x0000d2f0 MonoTouch_ObjCRuntime_Runtime_GetNSObject_intptr (monotouch.dll.6.s:6380) 18 sample 0x0000d3a4 MonoTouch_ObjCRuntime_Runtime_GetNSObjectWrapped_intptr (monotouch.dll.6.s:6415) 19 sample 0x00023e08 wrapper_native_to_managed_MonoTouch_ObjCRuntime_Runtime_GetNSObjectWrapped_intptr (monotouch.dll.6.s:17991) 20 sample 0x002bea2c get_managed_object_for_ptr_fast (monotouch-glue.m:346) 21 sample 0x001ca1fc native_to_managed_trampoline_Kiip_KPManager_set_SharedManager (registrar.m:823)
这里是SDK:
www.jmawebtechnologies.com/files/archive.zip
这是示例项目
https://github.com/mono/monotouch-bindings/tree/master/Kiip
这里是软件崩溃的代码:
AppDelegate> KPManager.SharedManager = new KPManager(
这里是完整的崩溃日志:
www.jmawebtechnologies.com/files/crash.zip
这是因为你正在使用的libKiip.a库没有你正在构build的架构。 例如,如果libKiip.a具有armv6和i386代码,但是您正在为armv7构build,则会发生这种情况。
在构build时应该导致这样的警告:
warning MT1301: Native library `libKiip.a` (i386, ARMv7) was ignored since it does not match the current build architecture(s) (ARMv6)
解决scheme是更改您的MonoTouch项目以使用libKiip.a库中可用的体系结构,或者确保在库中有正确的体系结构(我相信通用的libKiip.a二进制文件将会这样做)。