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"]);
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow