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"]);
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow