2012-05-10 4 views
0

J'écris l'application basée sur la localisation, obtenir des informations météorologiques via l'API en utilisant NSURLConnection pour les endroits actuels/autres .A la première fois, j'ai envoyé la demande de son travail avec succès. Mais la prochaine fois que je veux renvoyer l'information pour le même endroit cela ne fonctionne pas pendant que NSURLConnection n'appelle pas les méthodes de délégué.NSURLConnection ne démarre pas

ceci est mon code:

NSString *strs=[@"http://www.earthtools.org/timezone-1.1/" stringByAppendingString:[NSString stringWithFormat:@"%@/%@",place.latitude,place.longitude]]; 

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:strs]]; 

self.reqTimeZone=[NSURLConnection connectionWithRequest:request delegate:self]; 
[self.reqTimeZone start]; 
+0

Ce bloc de code s'exécute-t-il sur le thread principal ou le thread d'arrière-plan? Si vous utilisez un thread d'arrière-plan, vous devez attacher la connexion au runloop du thread. – 0x8badf00d

Répondre

6

Je suppose que vous voulez dire NSURLConnection (NSConnection n'existe pas). NSURLConnection ne peut être utilisé qu'une seule fois. Voir Reusing an instance of NSURLConnection.

Un autre gotcha avec NSURLConnection est qu'il doit être exécuté sur un thread avec un runloop. Le thread principal possède automatiquement une boucle d'exécution, mais les méthodes appelées sur les threads GCD et NSOperation doivent être créées explicitement. En pratique, vous n'avez probablement pas besoin d'exécuter NSURLConnection sur un thread d'arrière-plan. L'opération de téléchargement ne bloquera pas le thread principal. Si vous décidez d'exécuter NSURLConnection sur une boucle d'exécution, la façon la plus simple de le faire est probablement de créer une sous-classe NSOperation et de créer la boucle d'exécution à l'intérieur de -main.

+0

J'ai envoyé la demande NSURLConnection il fonctionne bien.maintenant je veux rafraîchir l'information je.en renvoyer le NSURLConnection.Refresh fonctionne lorsque l'appel de IBAction de button.But ne fonctionne pas à partir de la méthode NSThread. comment résoudre ce problème.Merci de rejouer – Madhubalan