Objective-C Language
NSTimer
Recherche…
Créer une minuterie
Cela créera une minuterie pour appeler la méthode doSomething
sur self
en 5.0
secondes.
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
Si vous repeats
paramètre repeats
sur false/NO
, vous souhaiterez que la minuterie ne se déclenche qu'une seule fois. Si nous définissons cette valeur sur true/YES
, elle se déclenche toutes les cinq secondes jusqu'à ce qu'elle soit invalidée manuellement.
Invalider une minuterie
[timer invalidate];
timer = nil;
Cela empêchera la minuterie de se déclencher. Doit être appelé à partir du thread dans lequel le minuteur a été créé, voir les notes d'Apple :
Vous devez envoyer ce message à partir du thread sur lequel la minuterie a été installée. Si vous envoyez ce message à partir d'un autre thread, la source d'entrée associée à la minuterie peut ne pas être supprimée de sa boucle d'exécution, ce qui peut empêcher la sortie du thread correctement.
Si vous définissez la valeur nil
, vous pourrez ensuite vérifier si elle fonctionne ou non.
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
Lancer manuellement une minuterie
[timer fire];
L'appel de la méthode d' fire
provoque l'exécution par NSTimer de la tâche qu'il aurait normalement effectuée sur une planification.
Dans un minuteur non répétitif , cela invalidera automatiquement le minuteur. En d’autres termes, le fait d’appeler le fire
avant l’intervalle de temps ne produira qu’une seule invocation.
Dans un compte à rebours , cela invoquera simplement l'action sans interrompre le programme habituel.
Stocker des informations dans la minuterie
Lors de la création d'une minuterie, vous pouvez définir le paramètre userInfo
pour inclure les informations que vous souhaitez transmettre à la fonction que vous appelez avec la minuterie.
En prenant un minuteur comme paramètre dans cette fonction, vous pouvez accéder à la propriété userInfo
.
NSDictionary *dictionary = @{
@"Message" : @"Hello, world!"
}; //this dictionary contains a message
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:dictionary
repeats:NO]; //the timer contains the dictionary and later calls the function
...
- (void) doSomething:(NSTimer*)timer{
//the function retrieves the message from the timer
NSLog("%@", timer.userInfo["Message"]);
}