Ho appena scaricato i rapporti sugli arresti anomali per una delle mie app per iPhone da iTunes Connect. L'incidente più comune ha una traccia simile alla seguente: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
Sono sicuro che circa l'80% si tratta di una questione interna al UIWebView e al di fuori della portata di quello che posso affrontare. Qualcuno ha qualche suggerimento su come restringere questo problema per aiutare a identificare se si tratta di un problema con il sistema operativo e UIWebView, o un problema che posso risolvere e risolvere nel mio codice? Grazie in anticipo.
UPDATE: l'UIWebView in questione è in una vista che viene rilasciata quando l'utente preme il pulsante indietro del controller di navigazione corrispondente. La soluzione accettata sembra fornire una buona spiegazione del perché questo errore si sta verificando.
Prima soluzione suggerita:
- (void)dealloc {
[webView release];
[super dealloc];
}
Dopo Soluzione consigliata:
- (void)dealloc {
webView.delegate = nil;
[webView stopLoading];
[webView release];
[super dealloc];
}
Metterò soldi su un delegato rilasciato che ne è la causa. –
veyr utile, grazie. –
Questo è esattamente quello che mi sta succedendo, analisi eccellente. –