"Chronomètre" Cocoa

Ascriptel

Membre confirmé
20 Juin 2003
17
0
Question de débutant:
J'ai besoin que mon programme effectue une action à des intervalles de temps réguliers (toutes les 30 secondes) à partir du lancement de l'application, mais je ne vois pas comment faire. Quelqu'un aurait-il une idée?

Merci d'avance.
 
La classe NSTimer te permet de faire des tempos.

-(void)awakeFromNib
{
NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(maMethode:) userInfo:nil repeats:YES];
}

Ce timer appelle normalement la méthode maMethode toutes les 30 secondes.

 
Merci de la réponse. Par contre, j'ai un warning comme quoi le timer en question n'est pas utilisé. Est-ce-que je peux ignorer cet avertissement ou faut-il que je fasse quelque chose?
 
Je viens juste de réaliser un petit exemple en Cocoa/Obj-C à propos de ces NSTimer... c'est ici!
 
Ascriptel a dit:
Merci de la réponse. Par contre, j'ai un warning comme quoi le timer en question n'est pas utilisé. Est-ce-que je peux ignorer cet avertissement ou faut-il que je fasse quelque chose?

Eddy58 t'as juste permi de créer ton timer il faut ensuite le déclencher par [timer fire] où tu veux.
Si c'est au lancement tu le fais tout juste après sa déclaration dans awakeFromNib.
Saches que des timers tu peux en créer autant que tu veux pour déclencher des évènements à intervalles réguliers.
N'oublie pas de faire [timer invaldate] pour le stoper au cas où.
 
Je ne crois pas qu'il faille envoyer le message "fire" au timer pour le faire démarrer...

<blockquote><font class="small"> Documentation Apple:</font><hr />
+ (NSTimer *) scheduledTimerWithTimeInterval: (NSTimeInterval) seconds target: (id) target selector: (SEL) aSelector userInfo: (id) userInfo repeats: (BOOL) repeats

Returns a new NSTimer object and registers it with the current NSRunLoop in the default mode. After seconds have elapsed, the timer fires, sending the message aSelector to target .


[/QUOTE]

Et d'après les tests que j'ai réalisé, un timer créé de cette manière démarre automatiquement. Mais je ne vois quand même pas pourquoi il a eu ce problème... peut-être que la méthode "maMethode" n'a pas été définie dans la classe ?!
 
Je m'excuse d'avoir fait couler de l'encre (digitale ;-) ) sur un problème aussi bête, mais en fait, c'est moi qui ai mal écrit mes fichiers:
dans l'interface, j'avais écrit NSTimer *timer (déclaration classique), mais dans l'implémentation, j'avais remis NSTimer *timer = ..., et apparemment c'est ça qui causait l'avertissement.
En tout cas, je vous remercie de vos réponses.
 
molgow a dit:
Je ne crois pas qu'il faille envoyer le message "fire" au timer pour le faire démarrer...



Et d'après les tests que j'ai réalisé, un timer créé de cette manière démarre automatiquement. Mais je ne vois quand même pas pourquoi il a eu ce problème... peut-être que la méthode "maMethode" n'a pas été définie dans la classe ?!

Tout à fait vrai Molgow merci.