2009-10-24 7 views
5

wciąż otrzymuję następujący komunikat z mojego iPhone 3.0 podczas próby konwersji dużego obiektu NSData do base64Encoding do transmisji http:IPhone SendDelegateMessage udało się powrócić po odczekaniu 10 sekund

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

Jeśli nie używali dotyk ekran dla całego tego przedziału (który może przedłużyć to oczekiwanie), zgłoś błąd.

Używam synchronicznego żądania, a ekran dotykowy zostanie zamrożony, wyświetlając status tylko UIProgressView podczas przesyłania danych. Ktoś ma jakiś pomysł, jak rozwiązać ten problem?

+0

jeśli masz synchroniczne żądania, gdy widok stron internetowych próbuje połączyć się z delegata nie będzie reagować. Jestem prawie pewien, że to jest ta wiadomość. – nielsbot

+0

no - to znaczy: zadzwoniłem do delegata i trwa to zbyt długo i nie mogę kontynuować wyświetlania HTML lub uruchamiania JS –

Odpowiedz

-1

Jeśli pomocą UIWebView to musimy to zrobić w pierwszej kolejności przed przejściem do następnego widoku

webView.delegate = nil; 
+0

Masz rację, ale to nigdzie w pobliżu odpowiedzi na ten problem. że Merly zapobiega złemu dostępowi –

3

Jak mówi: zażycia zbyt długo; D
widok internetową na angielski: "zadzwoniłem delegatem, a to trwa zbyt długo i nie mogę kontynuować wyświetlanie HTML lub działa JS”

nie blokować widok internetową lub będzie narzekać po jakimś czasie ...

Czyniąc synchroniczny prośbę? w głównym wątku? nigdy zrobić

Lepszy sposób:

- webView:... { 
     dispatch_async(dispatch_get_global_queue(0,0), ^{ 
      //DO LONG RUNNING IN BG 

      dispatch_sync(dispatch_get_main_queue(), ^{ 
       //update UI 
      } 
     } 
}