5 Stimmen

IPhone SendDelegateMessage konnte nicht zurückkehren, nachdem er 10 Sekunden gewartet hatte.

Ich erhalte ständig die folgende Nachricht von meinem iPhone 3.0, wenn ich versuche, ein großes NSData-Objekt in base64Encoding für die HTTP-Übertragung umzuwandeln :

void SendDelegateMessage(NSInvocation*): delegate failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

Wenn Sie während dieses gesamten Intervalls den Touchscreen nicht verwendet haben (was diese Wartezeit verlängern kann), reichen Sie bitte einen Fehlerbericht ein.

Ich verwende eine synchrone Anfrage und der Touchscreen wird eingefroren sein, wobei nur die UIProgressView den Status beim Hochladen von Daten anzeigt. Hat jemand eine gute Idee, wie man dieses Problem lösen kann?

3voto

Daij-Djan Punkte 48429

Wie es sagt: du brauchst zu lange ;D
Webansicht auf Deutsch: "Ich habe einen Delegaten aufgerufen und es dauert zu lange und ich kann nicht fortfahren, HTML anzuzeigen oder JS auszuführen"

Blockiere die Webansicht nicht, sonst wird sie sich nach einer Weile beschweren...

Eine synchrone Anfrage machen? Auf dem Haupt-Thread? Das sollte man nie tun

Bessere Methode:

- webView:... {
      dispatch_async(dispatch_get_global_queue(0,0), ^{
          //AUSFÜHREN VON LANGER DAUER IM HINTERGRUND

          dispatch_sync(dispatch_get_main_queue(), {
              //UI aktualisieren
          }
      }
}

-1voto

Wenn Sie den UIWebView verwenden, müssen wir dies zuerst tun, bevor wir zum nächsten View wechseln

webView.delegate = nil;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X