我正在浏览我的iPhone应用程序的一些报告的崩溃报告,我对以下内容感到困惑。
它很可能在我的代码中崩溃 - 它可能是一个事件处理程序在某处调用错误的选择器。问题是我不知道这个代码是什么 - 我不知道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 :(得分:5)
UICalloutBar
是一个UIKit私有API。
我认为这是文本选择中出现的上下文菜单...(复制/粘贴...)
无论如何,这次崩溃真的很喜欢来自内部API。
所以我猜它是:
我担心你找到解决办法的可能性非常低。我希望我错了! :)
答案 1 :(得分:2)
我也遇到了这个API的崩溃。我允许我的tableView复制单元格,自动显示上下文复制菜单。
崩溃是用户单击导航栏的后退按钮而不是单击此菜单选项的结果。菜单不会被解散并保持浮动在窗口上,直到有人点击它。到这时,UITableViewController子类将从导航堆栈中弹出,从而导致将消息发送到解除分配的实例。
这可能是Apple UIKit的错误,我不确定。一种解决方案是在viewWillDisappear:
方法中手动关闭菜单。
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:animated];
}