2010-09-08 8 views
0

i ont ceci:UILabel comportement étrange

- (IBAction)checkupdate 
{ 
statusText.text = [[NSString alloc] initWithFormat:@"Checking......"]; 

chaque fois que j'appuyez sur la touche, la chaîne se affichage, ok pas de problème avec ça.

maintenant quand j'ajouter

NSURLRequest *theRequest = 
[NSURLRequest requestWithURL: 
[NSURL URLWithString:@"http:/myserver/version.plist"] 
       cachePolicy:NSURLRequestUseProtocolCachePolicy 
      timeoutInterval:5.0];  
NSURLResponse *response; 
NSData *received = 
[NSURLConnection sendSynchronousRequest:theRequest 
         returningResponse:&response error:&error]; 

la chaîne ne reçoit pas 1RE. le code NSURLRequest est situé sous le code d'affichage de la chaîne dans la même action.

l'affichage de chaîne uniquement après que la requête nsurl est terminée.

l'affichage de la chaîne n'est-il pas supposé exécuter 1st? J'ai essayé de mettre {,} pour couvrir la requête nsurl, mais il est quand même exécuté en premier.

des idées?

Répondre

1

La valeur de l'étiquette a été définie, mais le redessin de l'étiquette ne peut être effectué que lorsque la fonction se termine et qu'il n'est pas garanti qu'elle se produise directement à la sortie. Comme votre requête est synchrone, cela peut prendre beaucoup de temps avant qu'elle ne soit redessinée.

+0

hm ... comment puis-je le faire apparaître dès que le bouton est enfoncé? – Stefan

+0

Envoyer la requête de manière asynchrone réduirait sûrement le temps nécessaire pour afficher le nouveau texte d'étiquette. –