2011-04-18 2 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

+0

나는 어디에서 충돌하고 있는지 전혀 모르지만 ... 이것은 iTunes Connect의 충돌 로그 중 하나입니다. 나는 그것을 끝까지 재현 할 수 없다. –

+0

@ Inspire48 충돌 보고서의 BreakPoints ... 그는 그 버그를 재현 할 수 없으며 그 버그 만 가지고 있다고 생각합니다. –

답변

4

UICalloutBar은 UIKit 전용 API입니다.

나는이

어쨌든,이 충돌은 정말 내부의 API에서 오는 좋아하는 텍스트 선택에 나타나는 컨텍스트 메뉴 (복사/붙여 넣기 ...)라고 생각합니다.

그래서 나는 그것이라고 생각 :

  • 사과 버그 (충돌 발행 수 대 아이폰 OS 버전을 확인) 더러운 확장/개조하면 되겠 내부 API를
에게 장난을 가진 탈옥 장치와
  • 또는 사람

    당신이이 문제를 해결할 확률이 매우 낮습니다. 나는 틀렸어! :)

  • 1

    이 API에서도 충돌이 발생했습니다. Context Copy 메뉴를 자동으로 표시하는 셀을 복사하도록 tableView를 허용하고있었습니다.

    이 충돌은 사용자가이 메뉴 옵션을 클릭하는 대신 탐색 모음의 뒤로 버튼을 클릭 한 결과 발생했습니다. 메뉴가 닫히지 않고 누군가가 누를 때까지 창에 떠있는 상태로 유지됩니다. 이 시간까지는 UITableViewController 하위 클래스가 탐색 스택에서 팝핑되어 할당되지 않은 인스턴스로 메시지가 전송됩니다.

    이것은 Apple UIKit 버그 일 수 있습니다. 확실하지 않습니다. 한 가지 해결책은 직접 viewWillDisappear: 방법으로 메뉴를 닫는 것입니다.

    - (void)viewWillDisappear:(BOOL)animated 
    { 
        [super viewWillDisappear:animated]; 
        [[UIMenuController sharedMenuController] setMenuVisible:NO animated:animated]; 
    } 
    
    관련 문제