iOS UICalloutBar 崩溃

11

我的应用程序出现以下崩溃报告。您有什么想法可以帮我调试这个问题吗?

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x417d37f6

Thread 0: Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x39048b26 objc_msgSend + 5
1  UIKit                          0x310643ed +[UICalloutBar fadeSharedCalloutBarIfNeededForTouchInView:window:] + 80
2  UIKit                          0x31064365 -[UITouchesEvent _dismissSharedCalloutBarIfNeeded] + 228
3  UIKit                          0x3102cf87 _UIApplicationHandleEventQueue + 7070
4  CoreFoundation                 0x2e882183 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
5  CoreFoundation                 0x2e881653 __CFRunLoopDoSources0 + 206
6  CoreFoundation                 0x2e87fe47 __CFRunLoopRun + 622
7  CoreFoundation                 0x2e7eac27 CFRunLoopRunSpecific + 522
8  CoreFoundation                 0x2e7eaa0b CFRunLoopRunInMode + 106
9  GraphicsServices               0x334de283 GSEventRunModal + 138
10 UIKit                          0x3108e049 UIApplicationMain + 1136
11 App                            0x000d441f main (main.m:6)

我的代码中没有使用UICalloutBar。这似乎是在多种设备上发生的问题,但仅在iOS7中出现,并且只有当应用程序处于焦点状态时才会出现。

我看过这个链接,但并没有真正帮助到我:What is UICalloutBarButton, and why does it make my app crash?


1
你在项目中启用了你的僵尸吗? - jailani
这些是来自我的生产应用程序的崩溃报告,但在其中并未启用此功能。我可以在开发环境中启用它,但我自己并没有看到这个崩溃。 - zsalzbank
我的代码中没有使用UICalloutBar。我应该在问题描述中提及这一点。现在正在更新问题。 - zsalzbank
可能表明用户的设备已越狱,而其他原因导致了崩溃。尝试获取有关设备的更多信息。 - Legoless
你能解决这个问题吗? - Timur Kuchkarov
显示剩余3条评论
1个回答

0

我基于以下事实提出这个建议:您的应用程序存在与触摸相关的崩溃问题,同时与用户界面的解除相关,并且您的客户正在使用生产版本,因此无法特别调整系统以深入了解问题。

我建议您使用应用程序并记录所有触摸事件导致对话框、菜单或弹出窗口被解除的位置。然后找出其他可能产生相同效果的触摸事件,以及哪些触摸事件被监听但不符合逻辑上预期用户的操作。

例如,对于弹出窗口,通常情况下,您会触摸弹出窗口中的菜单项来关闭它。但是如果再次按下弹出窗口标题(以切换它),或者在弹出窗口外部按下(表示关闭弹出窗口)呢?

另一个例子是,用户需要在菜单中做出选择,但是他们可以按返回按钮回退。您可能没有以这种方式使用系统,但用户可能会在这些地方按下。

最后,如果您进行用户界面自动化,可以尝试猴子测试。也就是编写一个脚本(或下载开源实现之一),随机点击屏幕。让它在您的应用程序上运行,并查看它发现了什么问题——通常即使在强大的应用程序中,它也会发现触摸问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接