Objective-C Language
NSTimer
Szukaj…
Tworzenie timera
Stworzy to czasomierz, aby zadzwonić do doSomething
metodę na self
w 5.0
sekundy.
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
Ustawienie parametru repeats
na false/NO
oznacza, że chcemy, aby timer zadziałał tylko raz. Jeśli ustawimy to na true/YES
, uruchomi się co pięć sekund, aż do ręcznego unieważnienia.
Unieważnianie timera
[timer invalidate];
timer = nil;
To zatrzyma uruchamianie timera. Musi zostać wywołany z wątku, w którym utworzono stoper, zobacz uwagi Apple :
Musisz wysłać tę wiadomość z wątku, w którym zegar został zainstalowany. Jeśli wyślesz ten komunikat z innego wątku, źródło wejściowe powiązane z zegarem może nie zostać usunięte z pętli uruchamiania, co może uniemożliwić prawidłowe wyjście z wątku.
Ustawienie wartości nil
pomoże Ci sprawdzić, czy działa.
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
Ręczne odpalanie timera
[timer fire];
Wywołanie metody fire
powoduje, że NSTimer wykonuje zadanie, które zwykle wykonałby zgodnie z harmonogramem.
W przypadku niepowtarzającego się timera spowoduje to automatyczne unieważnienie timera. Oznacza to, że wywołanie fire
przed upływem przedziału czasu spowoduje tylko jedno wywołanie.
W przypadku powtarzającego się timera spowoduje to po prostu wywołanie akcji bez przerywania zwykłego harmonogramu.
Przechowywanie informacji w zegarze
Podczas tworzenia timera możesz ustawić parametr userInfo
, aby zawierał informacje, które chcesz przekazać do funkcji wywoływanej z timerem.
Przyjmując licznik czasu jako parametr we wspomnianej funkcji, można uzyskać dostęp do właściwości 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"]);
}