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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow