J'ai essayé d'utiliser Timer dans Swift et j'ai simplifié la ville comme suit:
func startTimer () {
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.test), userInfo: nil, repeats: true)
}
func test () {
print("FIRED")
}
Je voudrais appeler cela à partir d'une autre fonction et j'ai vérifié que la fonction startTimer fonctionne, mais la minuterie ne se déclenche pas. Cela a-t-il quelque chose à voir avec le RunLoop? Je suis assez nouveau dans le codage, donc toute explication serait appréciée.
Bonne pratique: dans startTimer (), vérifiez que le temporisateur n'a pas déjà été créé et effectuez l'affectation. Dans stopTimer (), vérifiez que le minuteur existe avant d'appeler invalidate et remettez-le à zéro.
De plus, pour votre sélecteur, assurez-vous que vous disposez du @objc
préfixe. Vous devriez pouvoir obtenir une minuterie de travail avec le code fourni. Bon codage!
class SomeClass {
var timer: Timer?
func startTimer() {
guard timer == nil else { return }
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(test), userInfo: nil, repeats: true)
}
func stopTimer() {
guard timer != nil else { return }
timer?.invalidate()
timer = nil
}
@objc func test() {
}
}