2011-06-03 3 views
1
- (IBAction) goStrobe:(id) sender { 
    [NSTimer scheduledTimerWithTimeInterval:2.0 
            target:self 
            selector:@selector(runLoop:) 
            userInfo:nil 
            repeats:YES]; 
} 

- (void) runLoop { 
    if (imageTwo.hidden = YES) { 
     imageTwo.hidden = NO; 
    } 

    if (imageTwo.hidden = NO) { 
     imageTwo.hidden = YES; 
    } 
} 

Mon code est ci-dessus. Chaque fois que je déclenche goStrobe, il se bloque et je n'arrive pas à comprendre pourquoi. Toute aide serait grandement appréciée. MerciJ'essaie de faire une boucle simple et il se bloque chaque fois que je l'exécute

+3

Notez que vos conditions 'if' sont des expressions d'affectation' = 'au lieu de comparaisons' == '. Vous voulez ce dernier. –

+1

Et quelque chose comme: imageTwo.hidden =! ImageTwo.hidden ferait le même travail en une ligne. –

+2

Relatif: Non seulement vous assignez au lieu de comparer, mais la structure rend vos clauses if inefficaces. Si la première condition est remplie, vous mettez à jour cette valeur, ce qui garantit que la seconde condition est remplie. Donc vous finiriez dans l'état avant la première clause if. – danyowdee

Répondre

3

C'est la signature de votre fonction runLoop qui est erronée dans le sélecteur, il suffit d'enlever le ":" à la fin. Vous n'en avez pas besoin car votre fonction ne prend aucun paramètre.

+1

+1 mais le sélecteur doit être '- (void) runLoop: (NSTimer *) timer'. –

+0

@Deepak pas nécessairement: Il est valide de configurer 'NSTimer' avec un sélecteur qui ne prend aucun argument - bien que normalement je ne le ferais pas. – danyowdee

+0

@danyowdee Mais le ['doc'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html) est précis avec les mots même bien que l'autre puisse fonctionner. –

Questions connexes