Zoeken…


Een timer maken

Hiermee wordt een timer gemaakt om de doSomething methode in 5.0 seconden self aan te roepen.

[NSTimer scheduledTimerWithTimeInterval:5.0
         target:self 
         selector:@selector(doSomething) 
         userInfo:nil 
         repeats:NO];

Als u de parameter repeats instelt op false/NO geeft dit aan dat we willen dat de timer slechts eenmaal wordt geactiveerd. Als we dit instellen op true/YES , wordt het elke vijf seconden geactiveerd totdat het handmatig ongeldig wordt.

Een timer ongeldig maken

[timer invalidate];
timer = nil;

Hierdoor wordt de timer gestopt. Moet worden opgeroepen vanuit de thread waarin de timer is gemaakt, zie de opmerkingen van Apple :

U moet dit bericht verzenden vanaf de thread waarop de timer is geïnstalleerd. Als u dit bericht vanaf een andere thread verzendt, wordt de ingangsbron die aan de timer is gekoppeld mogelijk niet uit de runlus verwijderd, waardoor de thread mogelijk niet correct wordt afgesloten.

Het instellen van nil helpt u vervolgens om te controleren of het actief is of niet.

if(timer) {
    [timer invalidate];
    timer = nil;
}

//Now set a timer again.

Een timer handmatig activeren

[timer fire];

Het aanroepen van de fire methode veroorzaakt een NSTimer om de taak zou hebben meestal uitgevoerd op een schema uit te voeren.

In een niet-herhalende timer maakt dit de timer automatisch ongeldig. Dat wil zeggen, het aanroepen van fire voordat het tijdsinterval is verstreken, resulteert in slechts één aanroep.

In een herhalende timer zal dit eenvoudig de actie oproepen zonder het gebruikelijke schema te onderbreken.

Informatie opslaan in de timer

Wanneer u een timer maakt, kunt u de parameter userInfo instellen om informatie op te nemen die u wilt doorgeven aan de functie die u met de timer userInfo .

Door een timer als parameter in deze functie te nemen, hebt u toegang tot de eigenschap 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow