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