【发布时间】:2014-01-29 16:25:28
【问题描述】:
在启用 VoiceOver 的情况下运行我的应用时,我遇到了奇怪的崩溃。该应用程序有一个侧边栏界面(如 Facebook)。当点击侧边栏UITableViewCell 中的一个UITableViewCells 时,我换掉了视图控制器(根据点击的单元格创建一个新的并释放旧的)。
启用 VoiceOver 后,我有时在点击单元格时会崩溃。这种崩溃并非每次都会发生(大约每两次或三次尝试一次),这不是导致崩溃的唯一原因(但在我的测试中,它是触发它的主要因素)。
请记住,此崩溃仅在启用 VoiceOver 后发生。
当崩溃发生时,我通常会在控制台中看到这一行。
*** -[UITableTextAccessibilityElement setAccessibilityLabel:]: 消息发送到已释放实例 0x1fdaec10
但我也见过
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayM objectAtIndex:]: index 6 beyond bounds [0 .. 4]” 请注意,我看到
NSRangeException启用了异常断点,它并没有将我指向我的代码中发生错误的位置。
所以我启用了 NSZombies 并在 Instruments 中运行该应用程序。我的任何代码都没有触及对象引用。
我也尝试在调试器之外运行时获取崩溃日志,但不幸的是 Xcode 无法对它们进行符号化。
最后一个异常回溯:
0 CoreFoundation 0x2e3c3f46 __exceptionPreprocess + 126
1 libobjc.A.dylib 0x387536aa objc_exception_throw + 34
2 CoreFoundation 0x2e2fa52e -[__NSArrayM objectAtIndex:] + 226
3 应用程序名称 0x000e3726 0x46000 + 644902
4 UIKit 0x0250462e 0x24c6000 + 255534
5 UIAccessibility 0x35c029f8 -[NSObject(AXPrivCategory)accessibilityElementCount] + 16
6 UIAccessibility 0x35bfe66a _appendChildrenToArrayStartingAtIndexWithChildren + 318
7 UIAccessibility 0x35bfe51e _appendChildrenToArrayStartingAtIndex + 86
8 UIAccessibility 0x35bfe460 _addAXElementsToArrayFromObject + 1580
9 UIAccessibility 0x35bfddfc _appendVendedAXElementsFromUIElements + 156
10 UIAccessibility 0x35bfdbfe _createAXUIElementsFromUIElements + 126
11 UIAccessibility 0x35bfc218 _copyParameterizedAttributeValueCallback + 152
12 AXRuntime 0x3152395c _AXXMIGCopyParameterizedAttributeValue + 168
13 AXRuntime 0x3152084e _XCopyParameterizedAttributeValue + 438
14 AXRuntime 0x31528158 mshMIGPerform + 184
15 核心基础 0x2e38e9da CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 30
16 核心基础 0x2e38e976 __CFRunLoopDoSource1 + 342
17 核心基础 0x2e38d14a __CFRunLoopRun + 1394
18 CoreFoundation 0x2e2f7c22 CFRunLoopRunSpecific + 518
19 核心基础 0x2e2f7a06 CFRunLoopRunInMode + 102
20 图形服务 0x32fd627e GSEventRunModal + 134
21 UIKit 0x30b9b044 UIApplicationMain + 1132
22 应用程序名称 0x000509e2 0x46000 + 43490
23 libdyld.dylib 0x38c5bab2 tlv_initializer + 2
崩溃发生在 iOS 6 和 7 上。我还尝试从整个应用程序中删除每个辅助功能调用,但应用程序仍然崩溃。
我整个星期都在试图弄清楚这一点,但我觉得我离我越来越近了。关于从这里开始的任何想法?
【问题讨论】:
-
如果没有相关的代码可以帮助您查看
标签: ios objective-c uitableview accessibility voiceover