设备(iPhone)设置结果应用程序中的按钮形状如果其关闭的应用程序工作崩溃

最近我将我的应用程序切换到iOS 7兼容性和应用程序工作正常,但如果我在设备设置(设置 – > Accessblity – >按钮形状切换)中打开按钮形状选项(在iOS 7.1中可用)然后应用程序崩溃并给出以下错误: –

– [NSAttributeDictionary textContainerForAttributedString:containerSize:lineFragmentPadding:]:无法识别的选择器发送到实例0x17e4e310 CoreFoundation

当按钮形状选项关闭时,应用程序工作正常。

崩溃堆栈跟踪: –

-[NSAttributeDictionary textContainerForAttributedString:containerSize:lineFragmentPadding:]: unrecognized selector sent to instance 0x17e4e310 CoreFoundation Occurrences7 Users2 # Binary Image Name Address Symbol 0 CoreFoundation 0x2f057f0b 1 libobjc.A.dylib 0x397eece7 objc_exception_throw 2 CoreFoundation 0x2f05b837 3 CoreFoundation 0x2f05a137 4 CoreFoundation 0x2efa9098 _CF_forwarding_prep_0 5 UIFoundation 0x36cd7915 __NSStringDrawingEngine 6 UIFoundation 0x36cd4863 -[NSString(NSExtendedStringDrawing) drawWithRect:options:attributes:context:] 7 UIKit 0x318a02c9 -[UILabel _drawTextInRect:baselineCalculationOnly:] 8 UIKit 0x31906709 -[UILabel drawTextInRect:] 9 UIKit 0x3190650b -[UILabel drawRect:] 10 UIKit 0x319064a9 -[UIView(CALayerDelegate) drawLayer:inContext:] 11 QuartzCore 0x31532189 -[CALayer drawInContext:] 12 QuartzCore 0x3151bc5b CABackingStoreUpdate_ 13 QuartzCore 0x315f7c1d ___ZN2CA5Layer8display_Ev_block_invoke 14 QuartzCore 0x3151b50b x_blame_allocations 15 QuartzCore 0x3151b1bf _ZN2CA5Layer8display_Ev 16 QuartzCore 0x314fed41 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE 17 QuartzCore 0x314fe9d9 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE 18 QuartzCore 0x314fe3e5 _ZN2CA7Context18commit_transactionEPNS_11TransactionE 19 QuartzCore 0x314fe1f7 _ZN2CA11Transaction6commitEv 20 QuartzCore 0x3152b8e3 _ZN2CA11Transaction14release_threadEPv 21 libsystem_pthread.dylib 0x39e096d1 22 libsystem_pthread.dylib 0x39e09453 23 libsystem_pthread.dylib 0x39e0a1b9 pthread_exit 24 Foundation 0x2f994703 +[NSThread exit] 25 Foundation 0x2fa40a2d __NSThread__main__ 26 libsystem_pthread.dylib 0x39e0a959 27 libsystem_pthread.dylib 0x39e0a8cb _pthread_start 28 libsystem_pthread.dylib 0x39e08ae8 thread_start 

任何建议谢谢

这通常是因为iOS 7.1中某些代码的不兼容性而发生的。

这必须在设备中发生,而不是在模拟器中发生。 对?

模拟器在不同的硬件(底层Mac OS)上运行而不是设备的硬件这一事实可能意味着偶尔存在这些差异。

您可以做的是放置一个“exception断点”来找出给出此错误的方法。 获得方法后,您需要做的就是在主线程中调用该方法。

您可以使用 :

 dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething]; }); 

这应该可以解决问题。 希望这可以帮助。 谢谢。 🙂