2011-04-18 71 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]; 
} 
相關問題