2013-01-12 8 views
14

W mojej aplikacji często zdarza się wiele awarii z poniższym logiem, ale nawet z kilkoma urządzeniami testowymi i wersjami iOS nie mogę odtworzyć to. Więc nie ma sposobu, aby znaleźć powód na Xcode. Ponieważ nie ma żadnego śladu, który prowadzi do mojego kodu, nie wyobrażam sobie żadnego sposobu na znalezienie jego pochodzenia. Sama aplikacja jest bardzo złożona i oczywiście wykorzystuje się wiele widoków przewijania, również osadzonych.Nie można znaleźć przyczyny awarii w [UIScrollView (UIScrollViewInternal) _scrollViewAnimationEnded: finished:]

Czy ktoś ma pomysł, od czego zacząć? Czy ktoś miał wcześniej podobny problem?

Jestem bardzo wdzięczny za każdą pomoc!

poważaniem, Florian

OS Version:  iPhone OS 6.0.1 (10A523) 
Report Version: 104 

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0xd1d28fbc 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x392e65b0 objc_msgSend + 16 
1 UIKit        0x35a839f7 -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded:finished:] + 135 
2 UIKit        0x35a838e9 -[UIAnimator stopAnimation:] + 469 
3 UIKit        0x35b1e257 -[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 295 
4 UIKit        0x35a83381 -[UIAnimator(Static) _LCDHeartbeatCallback:] + 53 
5 QuartzCore       0x323d3071 CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 161 
6 QuartzCore       0x323d2fc9 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 65 
7 IOMobileFramebuffer     0x340befd7 IOMobileFramebufferVsyncNotifyFunc + 155 
8 IOKit        0x35ee8449 IODispatchCalloutFromCFMessage + 193 
9 CoreFoundation      0x339605db __CFMachPortPerform + 119 
10 CoreFoundation      0x3396b173 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 
11 CoreFoundation      0x3396b117 __CFRunLoopDoSource1 + 139 
12 CoreFoundation      0x33969f99 __CFRunLoopRun + 1385 
13 CoreFoundation      0x338dcebd CFRunLoopRunSpecific + 357 
14 CoreFoundation      0x338dcd49 CFRunLoopRunInMode + 105 
15 GraphicsServices     0x33f222eb GSEventRunModal + 75 
16 UIKit        0x3596a2f9 UIApplicationMain + 1121 
17         0x00005233 main (main.m:14) 

Odpowiedz

2

Sygnał SIGSEGV jest wysyłany do procesu, kiedy to sprawia, że ​​nieprawidłowy odniesienie pamięci wirtualnej lub błąd segmentacji. (patrz Wikipedia)

Masz dostęp do obiektu, który prawdopodobnie został zwolniony. Jak to jest podczas animacji, może zdefiniowałeś selektor, który ma zostać wywołany po zakończeniu animacji lub czegoś podobnego? To by było, gdybym zaczął szukać.

17

Miałem taką samą awarię. Okazało się, że animowaliśmy kontroler za pomocą [controller setContentOffset: newPt animated: YES], i zaimplementowaliśmy metodę delegata scrollViewDidScroll na kontrolerze. Kliknięcie przycisku na ekranie pozwala przejść do kolejnego kontrolera, więc jeśli użytkownik kliknął przycisk podczas trwania animacji, trafilibyśmy w awarię pierwszego plakatu. Rozwiązaniem jest po prostu ustawienie delegata na zero w dealloc.

+0

Ustawienie zer w dealloc działa świetnie! Dzięki – mikemike396