Sök…


Skapa en timer

Detta skapar en timer för att ringa doSomething metoden på sig self5.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"]);
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow