Cómo usar Timer (NSTimer) en Swift: creación, detención y repetición del temporizador
¡Hola! Acabo de empezar a aprender Swift y estoy intentando implementar un temporizador simple de cuenta regresiva en mi aplicación. Necesito que el valor en la pantalla se actualice cada segundo y que el temporizador se detenga después de 10 segundos.
Encontré la clase Timer en la documentación, pero tengo problemas. Esto es lo que intento hacer:
```swift
var seconds = 10
func startTimer() {
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
}
@objc func updateTimer() {
seconds -= 1
print(seconds)
if seconds == 0 {
// ¿Cómo detener el temporizador?
}
}
```
El temporizador se inicia y cuenta los segundos, pero no entiendo:
1. ¿Cómo detener correctamente el temporizador cuando `seconds` llega a 0?
2. ¿Por qué Xcode a veces muestra una advertencia sobre un ciclo de referencia fuerte (strong reference cycle)?
3. ¿Cómo hacer un temporizador que se active solo una vez (sin repetición)?
4. ¿Hay alguna forma de usar Timer sin selector, por ejemplo con un closure?