Objective-C Language
NSTimer
Ricerca…
Creazione di un timer
Ciò creerà un timer per chiamare il metodo doSomething
su self
in 5.0
secondi.
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
Impostando il parametro repeats
su false/NO
indica che vogliamo che il timer si attivi solo una volta. Se lo impostiamo su true/YES
, verrebbe generato ogni cinque secondi fino a quando non viene invalidato manualmente.
Invalidare un timer
[timer invalidate];
timer = nil;
Questo fermerà il timer dal licenziamento. Deve essere chiamato dal thread in cui è stato creato il timer, vedere le note di Apple :
È necessario inviare questo messaggio dal thread su cui è stato installato il timer. Se si invia questo messaggio da un altro thread, la sorgente di input associata al timer non può essere rimossa dal suo ciclo di esecuzione, il che potrebbe impedire l'uscita corretta del thread.
L'impostazione nil
ti aiuterà a controllare se è in esecuzione o meno.
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
Spegnere manualmente un timer
[timer fire];
La chiamata al metodo di fire
fa sì che un NSTimer esegua l'attività che normalmente avrebbe eseguito su una pianificazione.
In un timer non ripetuto , ciò invalida automaticamente il timer. Cioè, chiamare il fire
prima che l'intervallo di tempo sia scaduto comporterà solo una chiamata.
In un timer ripetuto , questo semplicemente invocherà l'azione senza interrompere il solito programma.
Memorizzazione delle informazioni nel timer
Quando si crea un timer, è possibile impostare il parametro userInfo
per includere le informazioni che si desidera passare alla funzione che si chiama con il timer.
Prendendo un timer come parametro in detta funzione, è possibile accedere alla proprietà 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"]);
}