UIWebView zufälliger Absturz bei [UIViewAnimationState release]: Nachricht gesendet, in der Instanz freigegeben
Bin ich mit einer random UIWebView
crash mit iOS8.1 und UIWebView
mit einem iPhone5. In meinen tests hat der Absturz scheint nicht auf iOS7.
Habe ich das github-repository zum reproduzieren des Absturzes:
https://github.com/crarau/WebViewCrash
Grundsätzlich bin ich dem hinzufügen eines UIWebView
- und be-www.amazon.com
Zufällig die app abstürzt, auf der WebThread
mit EXC_ARM_BREAKPOINT
Nach der Aktivierung Zombie-tracking auf der Konsole gibt es diese Meldung:
[UIViewAnimationState release]: message sent to deallocated instance 0x14deff70
Hier, was passiert, auf UIView
laden:
[super viewDidLoad];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.amazon.com"]];
self.webView.layer.cornerRadius = 0;
self.webView.userInteractionEnabled = YES;
self.webView.multipleTouchEnabled = YES;
self.webView.backgroundColor = [UIColor clearColor];
self.webView.scrollView.scrollEnabled = NO;
self.webView.scrollView.bounces = NO;
[self.webView loadRequest:urlRequest];
Den exception-stacktrace:
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000000000defe
Triggered by Thread: 2
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x2fe054f0 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x2fe052e4 mach_msg + 36
2 CoreFoundation 0x21fed936 __CFRunLoopServiceMachPort + 142
3 CoreFoundation 0x21febedc __CFRunLoopRun + 1012
4 CoreFoundation 0x21f3a20c CFRunLoopRunSpecific + 472
5 CoreFoundation 0x21f3a01e CFRunLoopRunInMode + 102
6 GraphicsServices 0x293330a4 GSEventRunModal + 132
7 UIKit 0x255461cc UIApplicationMain + 1436
8 WebViewCrash 0x0002deec main (main.m:14)
9 libdyld.dylib 0x2fd52aac start + 0
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x2fe052a0 kevent64 + 24
1 libdispatch.dylib 0x00162674 0x154000 + 58996
2 libdispatch.dylib 0x00157496 0x154000 + 13462
Thread 2 name: WebThread
Thread 2 Crashed:
0 CoreFoundation 0x2202aea2 ___forwarding___ + 534
1 CoreFoundation 0x21f5cdf4 _CF_forwarding_prep_0 + 20
2 CoreFoundation 0x21f2ee58 CFRelease + 596
3 QuartzCore 0x24f0ba60 CA::release_objects(X::List<void const*>*) + 12
4 QuartzCore 0x24f10dc2 -[CAAnimation dealloc] + 50
5 libobjc.A.dylib 0x2f7ecd5a objc_object::sidetable_release(bool) + 162
6 libobjc.A.dylib 0x2f7ed1a4 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 400
7 CoreFoundation 0x21fee2a4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 12
8 CoreFoundation 0x21fede1e __CFRunLoopDoTimer + 646
9 CoreFoundation 0x21fec06e __CFRunLoopRun + 1414
10 CoreFoundation 0x21f3a20c CFRunLoopRunSpecific + 472
11 CoreFoundation 0x21f3a01e CFRunLoopRunInMode + 102
12 WebCore 0x2d362ebe RunWebThread(void*) + 414
13 libsystem_pthread.dylib 0x2fe95e90 _pthread_body + 136
14 libsystem_pthread.dylib 0x2fe95e02 _pthread_start + 114
15 libsystem_pthread.dylib 0x2fe93b8c thread_start + 4
Jede Beratung wird geschätzt
Dank
- Ich bemerkte, dass der Absturz passiert meistens auf WiFi + Heavy web-Seiten.
- Hier gilt das gleiche beim laden COUB-player
- Tut es immer noch passieren, die iOS 8.1.1 beta?
- ich versuchte zu reproduzieren Sie den Absturz, konnte aber nicht. Geschieht es auf der physischen Geräte, oder nur im simulator, wie gut? Alle weiteren Schritte systematisch reproduzieren? Passiert es zufällig?
- Alle updates zu diesem Thema? Ich bin immer noch der Begegnung mit dem gleichen problem und mit WKWebView ist keine Lösung: es hat einen bug verursacht Fehler beim laden von lokalen Ressourcen...
- Dieser bug war auch in iOS 8.4, aber heute morgen, nach der Aktualisierung auf iOS 8.4.1, es ist gegangen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei mir tritt das gleiche Problem auf iOS 8 und mehr speziell ein iPad 3 scheitert viel häufiger als andere.
Basierend auf Ihre post und ein paar andere, die ich finden konnte, scheint es, dass es ein Problem mit
UIWebView
auf iOS8 nur, wie es funktioniert auf iOS7.Was ich getan habe, ist die Verwendung der neuen
WKWebView
auf iOS8, die nicht die gleiche Frage, während weiterhinUIWebView
auf iOS7.Das beste, was zu tun wäre, um Datei ein radar mit Apple und wechseln Sie zu
WKWebView
in der Zwischenzeit.Wenn Sie nicht mit Animationen, die Sie vermeiden können diese Fehler durch das deaktivieren der Animationen. Setzen Sie diese in Ihrem controller init-Methode:
UIViewAnimationState
etwa 1, 5 mal über über 50 startet beim Start meiner cordova-iOS-app. Nach diesem Rat, den ich gerade gestartet, es 30 gerade mal mit keine Fehler.Diese Arbeit erscheint, um es zu beheben für meine app. Ich bin nicht zufrieden mit diesem, aber es ist derzeit das einzige, was ich in der Lage gewesen, um herauszufinden, um loszuwerden, der Absturz.
Oder, wenn Sie wollen, etwas sicherer, können Sie WKWebView auf iOS 8+
Seit WKWebView keine Unterstützung für lokale Dateien, starten Sie eine web-server:
Dann, je nach version des Betriebssystems, erstellen Sie Ihre webview:
"Und navigieren Sie dann zu: [NSString stringWithFormat: "htztp://127.0.0.1:%d", (int)webServer.port]
(Ignorieren Sie die z in der http -, stackoverflow lässt mich nicht post-urls auf localhost)
Habe ich das problem gelöst. Ich hatte das gleiche Problem hinzufügen einer video-tag (Quelle war eine lokale mp4-Datei ca. 18Mb). Ich konnte erkennen das video-tag, wie den Absturz verantwortlich, weil html-video stürzt nicht ab. Dann habe ich versucht zu injizieren, zwei Sekunden später ist das video-tag per javascript und das app abgestürzt ist. Nach ein paar Stunden fand ich dies: UIWebView laden von html5-Video-crash EXC_BAD_ACCESS.
War meine Lösung zum extrahieren der video-tag Injektion in eine javascript-Funktion und rufen diese Funktion auf webViewDidFinishLoad.
So, in meinem controller habe ich:
Während in meinen index.html ich habe:
und (ich Hinzugefügt ein audio-tag auch!):
Ich weiß, es klingt wie eine seltsame Lösung, aber es funktioniert wirklich. Ich hatte das gleiche identische Problem wie hier gesagt hat, auch so, dass Zombie-tracking
stellen Sie sicher, dass Sie die UIWebView delegieren zu-null in der dealloc-Methode hinzu
Versuchen, zu aktualisieren, um iOS 8.4.1. Es funktionierte für uns (aber wir nicht finden, alle Verweise auf diesen bug in release notes).
Weiß ich bin spät dran, aber das könnte jemandem helfen, stellen Sie sicher, dass Ihr IBOutlet Ansichten sind schwach. Diese Antwort hat mir geholfen, um loszuwerden, dieses Problem.