Ich habe gerade die Absturzberichte für eine meiner iPhone-Apps von iTunes Connect heruntergeladen. Der häufigste Crash hat eine Spur wie folgt aus:EXC_BAD_ACCESS in UIWebView
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xa1b1c1db
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x3030e6f4 objc_msgSend + 16
1 UIKit 0x30ebebee -[UIWebView webView:resource:didFinishLoadingFromDataSource:]
2 UIKit 0x30ebe5ca -[UIWebViewWebViewDelegate webView:resource:didFinishLoadingFromDataSource:]
3 CoreFoundation 0x32b73b5c __invoking___ + 60
4 CoreFoundation 0x32bc67be -[NSInvocation invoke]
5 WebCore 0x320baa86 HandleDelegateSource
6 CoreFoundation 0x32bb8a96 CFRunLoopRunSpecific
7 CoreFoundation 0x32bb8356 CFRunLoopRunInMode
8 GraphicsServices 0x30544cd4 GSEventRunModal
9 GraphicsServices 0x30544d80 GSEventRun
10 UIKit 0x30d2c768 -[UIApplication _run]
11 UIKit 0x30d2b46c UIApplicationMain
Ich bin etwa 80% sicher, dass dies ein Problem intern zu UIWebView und außerhalb des Rahmens, was ich ansprechen kann. Hat jemand Vorschläge, wie Sie dieses Problem eingrenzen können, um festzustellen, ob es sich um ein Problem mit dem Betriebssystem und UIWebView handelt, oder um ein Problem, das ich in meinem Code beheben und beheben kann? Danke im Voraus.
UPDATE: Die UIWebView in Frage ist in einer Ansicht, die freigegeben wird, wenn der Benutzer die Zurück-Taste der entsprechenden Navigationssteuerung trifft. Die akzeptierte Lösung scheint eine gute Erklärung dafür zu liefern, warum dieser Fehler auftritt.
Vor vorgeschlagene Lösung:
- (void)dealloc {
[webView release];
[super dealloc];
}
Nach vorgeschlagene Lösung:
- (void)dealloc {
webView.delegate = nil;
[webView stopLoading];
[webView release];
[super dealloc];
}
Ich werde Geld auf einen freigegebenen Delegierten setzen, der die Ursache dafür ist. –
veyr hilfreich, danke. –
Das ist genau das, was mir passiert, ausgezeichnete Analyse. –