Poniżej znajduje się to, co skopiowałem/wkleiłem z dziennika awarii wysłanego przez klienta. Nie jestem w stanie zrozumieć, co to znaczy: sAplikacja ulega awarii po uruchomieniu NavigationController!
Wygląda na to, że aplikacja uległa awarii po przejściu z powrotem do poprzedniego ekranu (i to właśnie zgłosił klient). Co to jest UIWebDocumentView?
Muszę rozwiązać awarię, ale utknąłem tutaj, więc każda pomoc jest bardzo ceniona.
P.S. Używam iphone sdk 3.0.
Date/Time: 2009-09-29 18:16:28.458 -0400
OS Version: iPhone OS 3.0 (7A341)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xbbadbeef
Crashed Thread: 4
Thread 4 Crashed:
0 WebCore 0x3588dd74 __ZL17_WebTryThreadLockb + 288
1 WebCore 0x3588e4c0 __ZL18_WebThreadAutoLockv + 52
2 UIKit 0x30aea484 -[UIWebDocumentView _responderForBecomeFirstResponder] + 8
3 UIKit 0x30978b34 -[UINavigationTransitionView transition:fromView:toView:] + 200
4 UIKit 0x30978a54 -[UINavigationTransitionView transition:toView:] + 24
5 UIKit 0x30974470 -[UINavigationController _startTransition:fromViewController:toViewController:] + 1604
6 UIKit 0x30973d90 -[UINavigationController _startDeferredTransitionIfNeeded] + 256
7 UIKit 0x309a7468 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 400
8 UIKit 0x309a72c8 -[UINavigationController popViewControllerAnimated:] + 32
9 Snocell 0x0002ae00 0x1000 + 171520
10 Foundation 0x30554062 -[NSThread main] + 42
11 Foundation 0x305023f2 __NSThread__main__ + 852
12 libSystem.B.dylib 0x31d705a0 _pthread_body + 20
Ok, chyba znalazłem rozwiązanie. Udostępnienie go na wypadek, gdyby ktoś tu spadł: EXC_BAD_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS oznacza, że adres wirtualny, którego referendumujesz, nie znajduje się w tabelach stron lub nie masz do niego dostępu. Jest to adres wirtualny, do którego nie masz dostępu. Dla twojego przykładu adres adresu 0x67696c69 jest prawdopodobne, że jest to coś, co nie jest wskaźnikiem, który był traktowany jak wskaźnik; lub struktura danych zawierająca wskaźnik została zwolniona i zastąpiona innymi danymi. I wtedy widzę WebCore w dzienniku, komponent w iPhone WebKit (http://bit.ly/4j4WsN) –
Więc, co robiłem tutaj, rozdzielając stronę internetową w UIWebView i zanim mógł załadować całkowicie, popping powrót do poprzedniego widoku kontrolerów i to CRASHED. Zauważyłem, że UIWebView musi mieć delegata wyczyszczone przed zwolnieniem; w przeciwnym razie, jeśli żądanie internetowe zostanie zakończone po zwolnieniu UIWebView, spróbuje oddzwonić do delegata i spowoduje awarię aplikacji. ROZWIĄZANIE: Dodałem "myWebView.delegate = nil;" przed pojawieniem się kontrolera widoku i działa teraz :) –
Miałem podobny problem - webView.delegate = nil go rozwiązał, tak jak dla ciebie. –