2009-10-24 10 views
5

Je continue à recevoir le message suivant de mon iPhone 3.0 en essayant de convertir un grand objet NSData en base64Encoding pour la transmission http:IPhone SendDelegateMessage n'a pas réussi à revenir après avoir attendu 10 secondes

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

Si vous n'utilisez pas toucher écran pour cet intervalle entier (ce qui peut prolonger cette attente), s'il vous plaît déposer un bug. J'utilise la requête synchrone et l'écran tactile sera gelé avec seulement l'état d'affichage UIProgressView lors du téléchargement des données. Quelqu'un at-il une bonne idée de la façon de résoudre ce problème?

+0

si vous avez une demande synchrone, lorsque l'affichage Web tente d'appeler votre délégué, il ne répondra pas. Je suis à peu près sûr que c'est ce que ce message est. – nielsbot

+0

non - cela signifie: j'ai appelé un délégué et cela prend trop de temps et je ne peux pas continuer à afficher du HTML ou à lancer JS –

Répondre

-1

Si vous utilisez le UIWebView alors nous devons le faire avant de passer à la vue suivante

webView.delegate = nil; 
+0

Vous avez raison, mais ce n'est pas du tout la réponse à ce problème. cela empêche un mauvais accès –

3

Comme il est dit: vous prenez trop de temps; D
vue Web pour l'anglais: "J'ai appelé un délégué et prend trop de temps et je ne peux pas continuer à afficher HTML ou en cours d'exécution JS »

ne bloquent pas la vue Web ou il se plaindra après un certain temps ...

faire une demande synchrone? sur le fil principal? jamais le faire

mieux:

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

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