Objective-C Language
NSTimer
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"]);
}