2011-04-18 69 views
7

我正在浏览我的iPhone应用程序的一些报告崩溃报告,并且我被以下内容难住了。什么是UICalloutBarButton,它为什么会让我的应用程序崩溃?

它很可能会崩溃在我的代码的某处 - 它可能是一个事件处理程序调用错误的选择器的地方。问题是我不知道这里的代码是什么 - 我不知道UICalloutBarButton或UICalloutBar是什么。不用说,我不能在我的结尾重现这一点,否则很容易找出它发生的地方。

Date/Time:  2011-03-18 14:33:13.373 +0100 
OS Version:  iPhone OS 4.3 (8F190) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x317aaa1c __pthread_kill + 8 
1 libsystem_c.dylib    0x355593b4 pthread_kill 
2 libsystem_c.dylib    0x35551bf8 abort 
3 libstdc++.6.dylib    0x33378a64 __gnu_cxx::__verbose_terminate_handler() + 376 
4 libobjc.A.dylib     0x364b506c _objc_terminate 
5 libstdc++.6.dylib    0x33376e36 __cxxabiv1::__terminate(void (*)()) + 46 
6 libstdc++.6.dylib    0x33376e8a std::terminate() + 10 
7 libstdc++.6.dylib    0x33376f5a __cxa_throw + 78 
8 libobjc.A.dylib     0x364b3c84 objc_exception_throw 
9 CoreFoundation     0x354e21b8 -[NSObject(NSObject) doesNotRecognizeSelector:] 
10 CoreFoundation     0x354e1642 ___forwarding___ 
11 CoreFoundation     0x35458178 _CF_forwarding_prep_0 + 40 
12 CoreFoundation     0x3544befc -[NSObject(NSObject) performSelector:withObject:] 
13 UIKit       0x35e259b2 -[UICalloutBar buttonPressed:] 
14 CoreFoundation     0x3544befc -[NSObject(NSObject) performSelector:withObject:] 
15 UIKit       0x35e25cd4 -[UICalloutBarButton sendCallback] 
16 Foundation      0x31d096ce __NSFireDelayedPerform 
17 CoreFoundation     0x354b5a40 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ 
18 CoreFoundation     0x354b7ec4 __CFRunLoopDoTimer 
19 CoreFoundation     0x354b883e __CFRunLoopRun 
20 CoreFoundation     0x35448ebc CFRunLoopRunSpecific 
21 CoreFoundation     0x35448dc4 CFRunLoopRunInMode 
22 GraphicsServices    0x328e8418 GSEventRunModal 
23 GraphicsServices    0x328e84c4 GSEventRun 
24 UIKit       0x35bffd62 -[UIApplication _run] 
25 UIKit       0x35bfd800 UIApplicationMain 
26 app name      0x000022d0 main + 36 
27 app name      0x0000226c start + 44 
+0

第一步是弄清楚它何时崩溃:是在加载后立即执行还是在执行某些操作之后?使用NSLogs和断点来找出它崩溃的地方。 – FeifanZ 2011-04-18 22:12:59

+0

我不知道它在哪里崩溃......这是来自iTunes Connect的崩溃日志之一。我无法在我的最后重现它。 – 2011-04-18 22:15:56

+0

@ Inspire48崩溃报告中的BreakPoints?...我想他不能重现该错误,只有这样。 – 2011-04-18 22:16:22

回答

4

UICalloutBar是一个UIKit私有API。

我觉得这是对文本选择出现的上下文菜单...(复制/粘贴...)

无论如何,这崩溃真的喜欢从内部API的到来。

所以我想,这就是:

  • 一个苹果的bug(检查IOS版本VS崩溃OCCURENCES)
  • 或者有人用肮脏的扩展/调整搞乱内部API
越狱设备

恐怕您找到解决方案的机会非常低。我希望我错了! :)

1

我也从这个API崩溃了。我允许我的tableView自动复制显示上下文副本菜单的单元格。

崩溃是用户单击导航栏的后退按钮而不是单击此菜单选项的结果。菜单不会被解雇,并保持在窗口上浮动,直到有人点击它为止。此时,UITableViewController子类从导航堆栈弹出,导致消息被发送到解除分配的实例。

这可能是Apple UIKit错误,我不确定。一种解决方法是在viewWillDisappear:方法中手动关闭菜单。

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [[UIMenuController sharedMenuController] setMenuVisible:NO animated:animated]; 
} 
相关问题