Objective-C Language
NSTimer
Sök…
Skapa en timer
Detta skapar en timer för att ringa doSomething
metoden på sig self
på 5.0
sekunder.
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
Om du ställer in repeats
till false/NO
indikerar vi att timern bara ska avfyras en gång. Om vi ställer in detta till true/YES
, kommer det att avfyras var femte sekund tills manuellt ogiltigt.
Invaliderar en timer
[timer invalidate];
timer = nil;
Detta stoppar timern från att skjutas. Måste ringas från den tråd som timern skapades i, se Apples anteckningar :
Du måste skicka detta meddelande från tråden som timern installerades på. Om du skickar det här meddelandet från en annan tråd, kan det hända att ingångskällan som är associerad med timern inte tas bort från sin körslinga, vilket kan förhindra att tråden går ut ordentligt.
Att ställa in nil
hjälper dig bredvid att kontrollera om den körs eller inte.
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
Manuellt avfyra en timer
[timer fire];
Ringa fire
metoden orsakar en NSTimer att utföra uppgiften skulle det ha vanligtvis utförs på ett schema.
I en timer som inte upprepas gör detta timern automatiskt ogiltig. Det vill säga att det att ringa fire
innan tidsintervallet är upp kommer att resultera i endast en åkallelse.
I en upprepande timer kommer detta helt enkelt att åberopa handlingen utan att avbryta det vanliga schemat.
Lagra information i timern
När du skapar en timer kan du ställa in userInfo
parametern så att den innehåller information som du vill skicka till den funktion du ringer med timern.
Genom att ta en timer som en parameter i nämnda funktion kan du komma userInfo
egenskapen 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"]);
}