Salut,
Les NSTimers sont bien cool et en général ça ne pose aucun souci à les utiliser. J’ai bien dit en général. J’ai eu un souci avec ce matin…vraiment étrange.
Sur un projet, j’en utilise un pour déclencher une méthode dans XX secondes une fois seulement. Ça marche impeccable. Sur un nouveau projet, je réutilise le même mais en faisant varier un paramètre « repeats » à YES. Et bien sur, ça ne marchait plus.
Voici un timer qui déclenche une méthode une seule fois :
1 2 3 4 5 6 7 8 | -(void)blabla { [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(test:) userInfo:nil repeats:NO]; } -(void)test:(NSTimer*)timer { NSLog(@"je suis appelé 1 fois"); } |
Un timer qui se déclenche une méthode en boucle, techniquement il faudrait juste dire « repeats:YES » mais ca n’a pas marché dans mon cas. Le timer n’était jamais « fired » :p (je m’essaie à l’anglais)
1 2 3 4 5 6 7 8 | -(void)blabla { [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(test:) userInfo:nil repeats:YES]; } -(void)test:(NSTimer*)timer { NSLog(@"je suis appelé en boucle c'est la fête."); } |
Donc voici ce que j’ai utilisé pour que ça marche. J’ai forcé le démarrage du timer en boucle.
1 2 3 4 5 6 7 8 9 10 | -(void)blabla { NSTimer * timer = [NSTimer timerWithTimeInterval: 1 target: self selector: @selector(test:) userInfo: nil repeats: YES]; [[NSRunLoop mainRunLoop] addTimer: timer forMode: NSDefaultRunLoopMode]; } -(void)test:(NSTimer*)timer { NSLog(@"je suis appelé en boucle c'est la fête."); } |
Voilà voilà






