Objective-C Language
NSTimer
Suche…
Timer erstellen
Dadurch wird ein Timer erstellt, um die doSomething
Methode innerhalb von 5.0
Sekunden self
aufzurufen.
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO];
Wenn Sie den Parameter " repeats
auf " false/NO
, wird der Timer nur einmal ausgelöst. Wenn wir dies auf true/YES
, wird es alle fünf Sekunden true/YES
, bis es manuell deaktiviert wird.
Timer ungültig machen
[timer invalidate];
timer = nil;
Dadurch wird der Timer angehalten. Muss der Timer aus dem Thread aufgerufen werden erstellt wurde, siehe Apples Notizen :
Sie müssen diese Nachricht von dem Thread senden, in dem der Timer installiert wurde. Wenn Sie diese Nachricht von einem anderen Thread senden, wird die mit dem Zeitgeber verknüpfte Eingabequelle möglicherweise nicht aus der Laufschleife entfernt, wodurch der Thread möglicherweise nicht ordnungsgemäß beendet wird.
Wenn Sie nil
einstellen, können Sie als Nächstes überprüfen, ob es läuft oder nicht.
if(timer) {
[timer invalidate];
timer = nil;
}
//Now set a timer again.
Einen Timer manuell auslösen
[timer fire];
Das Aufrufen von fire
bewirkt eine NSTimer die Aufgabe auszuführen wäre es in der Regel nach einem Zeitplan durchgeführt haben.
Bei einem sich nicht wiederholenden Timer wird der Timer dadurch automatisch ungültig. Das heißt, das Aufrufen eines fire
vor Ablauf des Zeitintervalls führt nur zu einem Aufruf.
In einem sich wiederholenden Zeitgeber wird die Aktion einfach aufgerufen, ohne den üblichen Zeitplan zu unterbrechen.
Informationen im Timer speichern
Beim Erstellen eines Timers können Sie den Parameter userInfo
, dass er Informationen enthält, die Sie an die Funktion übergeben möchten, die Sie mit dem Timer aufrufen.
Wenn Sie in dieser Funktion einen Timer als Parameter verwenden, können Sie auf die Eigenschaft userInfo
zugreifen.
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"]);
}