Suche…


Parameter

Parameter Einzelheiten
interval Die Wartezeit in Sekunden, bevor der Timer ausgelöst wird. oder bei sich wiederholenden Timern die Zeit zwischen den Zündungen.
target Das Objekt, in dem der selector aufgerufen werden soll
selector In Swift ein Selector Objekt, das die Methode angibt, die auf dem target aufgerufen werden soll
repeats Wenn false , feuert die Timer nur einmal. Wenn true , Feuer , um die Timer alle interval Sekunden.

Bemerkungen

Mit einem NSTimer können Sie eine Nachricht nach NSTimer einer bestimmten Zeit an ein Ziel senden.

Timer erstellen

Dadurch wird ein Timer erstellt, um die doSomething Methode innerhalb von 5 Sekunden self aufzurufen.

Schnell

let timer = NSTimer.scheduledTimerWithTimeInterval(5,
                               target: self,
                             selector: Selector(doSomething()),
                             userInfo: nil,
                              repeats: false)

Swift 3

 let timer = Timer.scheduledTimer(timeInterval: 1,
                                        target: self, 
                                      selector: #selector(doSomething()), 
                                      userInfo: nil, 
                                       repeats: true)

Ziel c

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

Wenn Sie die Wiederholungen auf false/NO bedeutet dies, dass der Timer nur einmal ausgelöst werden soll. Wenn wir dies auf true/YES , wird es alle fünf Sekunden true/YES , bis es manuell deaktiviert wird.

Einen Timer manuell auslösen

Schnell

timer.fire()

Ziel c

[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.

Timer ungültig machen

Schnell

timer.invalidate()

Ziel c

[timer invalidate];

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.

Hinweise: Nachdem der Timer ungültig gemacht wurde, ist es unmöglich, den gleichen ungültigen Timer auszulösen. Stattdessen müssen Sie den ungültigen Timer erneut initialisieren und die Feuermethode auslösen.

Timer-Frequenzoptionen

Wiederholtes Timer-Ereignis

Schnell

class ViewController: UIViewController {
 
    var timer = NSTimer()
    
    override func viewDidLoad() {
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
    }

    func timerMethod() {
        print("Timer method called")
    }

    func endTimer() {
        timer.invalidate()
    }
}

Swift 3

class ViewController: UIViewController {
     
        var timer = Timer()
        
        override func viewDidLoad() {
            Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
        }
    
        func timerMethod() {
            print("Timer method called")
        }

        func endTimer() {
            timer.invalidate()
        }
    }

Muss manuell entwertet werden, falls gewünscht.

Schnell

Nicht wiederholtes verzögertes Timer-Ereignis

NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)

Swift 3

 Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)

Der Timer wird einmal 3 Sekunden nach der Ausführung ausgelöst. Wird automatisch gelöscht, sobald sie ausgelöst wird.

Weitergabe von Daten mit Timer

Wenn Sie Daten mit dem Timer-Trigger übergeben möchten, können Sie dies mit dem Parameter userInfo tun.

Hier ist der einfache Ansatz, der einen kurzen Überblick darüber gibt, wie Sie die Daten vom Timer an die ausgelöste Methode übergeben können.

[ Swift 3 ]

Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)

[ Ziel - C ]

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(iGotCall:)
                                                    userInfo:@"i am iOS guy" repeats:YES];

Die obige Codezeile führt ["Name": "i am iOS guy"] in die userInfo . Wenn nun der iGotCall angerufen wird, können Sie den übergebenen Wert als Code-Snippet abrufen.

[ Swift 3 ]

func iGotCall(sender: Timer) {
        print((sender.userInfo)!)
    }

[ Ziel - C ]

- (void)iGotCall:(NSTimer*)theTimer {
    NSLog (@"%@", (NSString*)[theTimer userInfo]);
}


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