IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

boucle for (foreach)


Sujet :

Objective-C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut boucle for (foreach)
    Bonjour,

    J'aimerais comprendre comment fonctionne la boucle "for" dans Objective-C.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    - (void)viewDidLoad {
     
    		NSArray *myArray = [[NSArray alloc] initWithObjects:@"numero 1", @"numero 2", @"numero 3", nil];
     
    		for (NSString *string in myArray) {
     
    		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"essai" message:string delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    		[alert show];
     
    		}
     
     
        [super viewDidLoad];
    }
    Le resultat est le suivant:

    Lorsque la vue apparait, un message d'alerte s'affiche avec "numero 1" et directement "numero 3". Apres avoir clique sur le bouton "OK", s'affiche le message "numero 2", je clique sur "OK" et s'affiche ensuite le message "numero 1".

    Je voudrais savoir pourquoi le "numero 3" apparait en premier, precede par un tres bref message "numero 1".

    Merci beaucoup.

  2. #2
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut
    Je pense que tu est partis dans une boucle infinie et que c'est l'affichage des alertes qui n'a pas le temps de suivre.
    De plus je ne vois pas ce que tu cherches à faire avec cette boucle d'alertes ?
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  3. #3
    Membre averti
    Avatar de Chatanga
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 211
    Points : 346
    Points
    346
    Par défaut
    Comme [alert show] n'est pas un appel bloquant, le comportement est très logique : les 3 appels successifs empilent les 3 alertes à l'écran (n° 1 < n° 2 < n° 3) et l'appui sur OK les ferme en commençant par la n° 3 et en finissant par la n° 1. Que l'alerte n° 1 (voire même la n° 2) s'affichage brièvement avant la n° 3 doit être du au temps que prend la création de la fenêtre avant son affichage, voire simplement de l'ordonnancement des threads à ce moment là.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Chatanga Voir le message
    Comme [alert show] n'est pas un appel bloquant, le comportement est très logique : les 3 appels successifs empilent les 3 alertes à l'écran (n° 1 < n° 2 < n° 3) et l'appui sur OK les ferme en commençant par la n° 3 et en finissant par la n° 1. Que l'alerte n° 1 (voire même la n° 2) s'affichage brièvement avant la n° 3 doit être du au temps que prend la création de la fenêtre avant son affichage, voire simplement de l'ordonnancement des threads à ce moment là.
    il n'y a pas de thread qui ait à voir là-dedans… l'explication était correcte jusque là.

    "show" crée les structures mais le dessin se fait plus tard : le thread principal appellera les méthodes de dessin (la méthode drawRect de tous les objets qui sont visibles et nécessitent un rafraîchissement dans l'ordre de leur ordonnancement à l'écran. (Et des optimisations pour ne pas dessiner inutilement les zones qui sont derrière un objet qui est aussi à rafraîchir interfèrent de manière assez complexe…)

    Décalez le window frame de l'alerte dans la boucle pour voir la superposition.

Discussions similaires

  1. [PHP 5.3] boucle FOR ou FOREACH
    Par ETVigan dans le forum Langage
    Réponses: 19
    Dernier message: 06/08/2012, 04h05
  2. [PHP 5.0] boucle for dans foreach
    Par stomerfull dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2010, 11h57
  3. Réponses: 18
    Dernier message: 25/07/2007, 12h34
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo