Ich schreibe Timer-Funktionen, um zu überprüfen, ob es gerade läuft, aber es scheint, dass ich immer die Timer-Variable zu Null gefunden habe. Damit wird immer eine neue Timer-Instanz erstellt.Swift 3 überprüfen, ob der Timer läuft
weak var myTimer: Timer?
// starting a timer
func startTimer(timer: Timer?, interval: Double, _selector: Selector, _repeats: Bool){
weak var _timer = timer
if (_timer == nil){
_timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: _selector, userInfo: nil, repeats: _repeats)
}
}
// stopping a timer
func stopTimer(timer: Timer?){
var _timer = timer
if (_timer != nil){
_timer!.invalidate()
_timer = nil
}
}
Timer starten durch
Aufrufself.startTimer(timer: self.myTimer, interval: 0.1, _selector: #selector(self.updateTimer), _repeats: true)
Irgendwie, auch nachdem der Timer gestartet wird, ist es immer noch gleich Null. Wenn die Funktion zum zweiten Mal aufgerufen wird, plant sie eine weitere Timer-Instanz. Und wenn ich versuche, es zu stoppen, wird es nicht erfolgreich sein, da es immer Null war. Wie kann ich das lösen?
danke
Beide '_timer' Variablen sind im lokalen Bereich und nicht miteinander verwandt. Was erwartest du? – vadian
überprüfen Sie den Umfang und warum verwenden Sie schwach – zombie
Ich habe versucht, nicht schwach var zu verwenden. Ich habe versucht, .isValid-Methode zu verwenden, aber da es Null ist, wird dies nicht funktionieren. –