NSTimer récalcitrant, il fait ce qu'il veut [résolu]

wiskywisky Membre
mars 2006 modifié dans API AppKit #1
dans une application, une fenêtre s'ouvre en demandant à  son contrôleur de le faire.
Ce dernier utilise un NSTimer. Il existe de façon de l'ouvrir.

Soit simple, soit multiple. voila l'etat des variables qui changent:
Simple :
path="/chemin/fichier1"
type="txt"
multiple = NO
liste = null;

multiple :
path=null
type=null
multiple = YES
liste = {fichier1; fichier2}@NSArray;

Dans le premier cas le Timer fonctionne et dans le deuxième il marche pas.
Dans les deux cas le Timer est bien instantié.

que ce passe-t-il??

Réponses

  • 07:53 modifié #2
    il me semble que "null" équivaut à  "rien" pour les actions
    Donc dans ton cas, tu devras mettre "nil" et non "null"
    Vu que la liste est nil dans le premier cas, voici:
    <br />if(!liste)<br />     //init du timer<br />
    


    Et au pire, si ça marche pas, fait :
    <br />if([liste count]==0)<br />&nbsp; &nbsp;  // init du timer<br />
    
  • wiskywisky Membre
    07:53 modifié #3
    Je veut que le timer fonctionne de la même manière dans les deux cas.
    En fait je sais pas ce que fait le timer dans le 2eme cas. Il ne déclenche jamais le méthode que je lui ai affecté.
  • Eddy58Eddy58 Membre
    07:53 modifié #4
    Il serait mieux de nous montrer le code... :o
  • wiskywisky Membre
    mars 2006 modifié #5
    Ici on ce trouve dans une instance de mon objet:
    [...]<br />
    


    les methodes : setpathmovie et setpathmoviemultiple initialise les variables et est forcément appelé avant la fonction openning. que ce soit setpathmovie ou setpathmoviemultiple qui ai été appeler ça ne doit pas changer le comportement de openning.

    mon problème est que, quand je fait ça :
    if([listeVideo count]==1)<br />		[myLaunchController setPathMovie:[listeVideo objectAtIndex:0] byType:@&quot;Video&quot;];<br />	else<br />		[myLaunchController setPathMovieMultiple:listeVideo];<br />	[myLaunchController openning];
    

    le timer marche pas alors que si je fait :
    [myLaunchController setPathMovie:path byType:@&quot;VCD&quot;];<br />		[myLaunchController openning];
    

    le timer marche
    Où j'ai faux?  :why?:
  • Eddy58Eddy58 Membre
    07:53 modifié #6
    Et en mettant les parenthèses ?
    [tt]
        if([listeVideo count]==1)
        {
    [myLaunchController setPathMovie:[listeVideo objectAtIndex:0] byType:@Video];
        }
    else
        {
    [myLaunchController setPathMovieMultiple:listeVideo];
        }
    [myLaunchController openning];
    [/tt]
  • wiskywisky Membre
    mars 2006 modifié #7
    je l'ai fait ça n'a rien changé!

    Je crois que j'ai un début de piste. quand ça marche je suis dans le contrôleur de l'application.
    Mais quand ça marche pas je suis dans une fonction qui est appelé et exécuté dans un nouveau thread détaché.
    Je doit avoir un problème de loop qui s'arrête sur lequel le timer s'appuie.
    j'ai créer une nouvelle fonction pour appeler correctement mais ça fait le même effet.

    [EDIT] Trouvé !!!! c'est bien le thread qui me cassait les pieds. Je suis passé par une notification en fin de thread pour lancer les fonctions que je voulais. Maintenant ça marche.
Connectez-vous ou Inscrivez-vous pour répondre.