Comment vérifier si NSTimer est en cours d'exécution ou non dans Swift. Dans obj-c, le code devrait être comme ceci, je suppose:
if (!myTimer) {
//DO
}
J'essaie de le définir dans Swift comme ceci et cela montre des erreurs.
if !myTimer {
// DO
}
Ce que je fais (dans les deux langues) est de rendre ma minuterie faible. Dans Swift, ce serait une option faible.
weak var myTimer: NSTimer?
Puis je crée une minuterie avec
myTimer = NSTimer.scheduledTimerWithTimeInterval(1,
target: self,
selector: "timerFired:",
userInfo: nil,
repeats: false)
Et puis vous pouvez utiliser
if timer == nil
pour dire si ça marche.
Pour arrêter le chronomètre, il suffit d'appeler
myTimer?.invalidate()
En Objective-C, ce serait
[myTimer invalidate];
Cela fonctionne dans Objective-C car l'envoi de messages à des pointeurs nuls est valide et ne fait rien.
Si vous ne souhaitez pas utiliser un facultatif faible, vous pouvez interroger un minuteur pour savoir s'il est en cours d'exécution en consultant sa propriété valid
.
Que diriez-vous de l'option ci-dessous? Pouvez-vous voir si cela fonctionne pour vous
if myTimer.valid {
}
if !myTimer.valid {
//DO
}