2009-10-24 9 views
5

sigo recibiendo el siguiente mensaje desde mi iPhone 3.0 al intentar convertir un objeto grande NSData en base64Encoding para la transmisión http:IPhone SendDelegateMessage no regresó después de esperar 10 segundos

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

Si no se está usando el toque pantalla para todo este intervalo (que puede prolongar esta espera), por favor presente un error.

Estoy utilizando una solicitud síncrona y la pantalla táctil se congelará solo con el estado de visualización de UIProgressView al cargar datos. ¿Alguien tiene alguna idea de cómo resolver este problema?

+0

si usted tiene una petición síncrona, cuando la vista web intenta llamar a su delegado no va a responder. Estoy bastante seguro de que ese es el mensaje. – nielsbot

+0

no, significa: llamé a un delegado y lleva demasiado tiempo y no puedo seguir mostrando HTML o ejecutando JS –

Respuesta

-1

Si está utilizando el UIWebView entonces tenemos que hacer esto primero antes de pasar a la siguiente vista

webView.delegate = nil; 
+0

Tiene razón, pero esto no se parece en nada a la respuesta a este problema. eso meramente evita un mal acceso –

3

Como se dice: se toma demasiado tiempo; D
vista web a Inglés: "Llamé un delegado y se tarda demasiado tiempo y no puede continuar mostrando HTML o correr JS"

no bloquean la vista web o que se quejan después de un tiempo ...

este modo una petición síncrona? en el hilo principal? Nunca hacer eso

mejor manera:

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

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