Análogo de dispatch_after en Swift: ¿cómo ejecutar código con retraso a través de GCD?
¡Hola a todos! Soy nuevo en Swift y antes escribía en Objective-C. Allí para retrasar la ejecución de código usaba dispatch_after, y era simple:
```objc
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"Pasaron 2 segundos");
});
```
Ahora estoy migrando a Swift, pero no encuentro un análogo directo. Busqué en Google y descubrí que dispatch_after ya no existe en Swift, y que hay que usar algo diferente. Intenté escribir así:
```swift
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
print("Pasaron 2 segundos")
}
```
Parece funcionar, pero no estoy seguro de si es correcto. Me confunde especialmente la sintaxis con `deadline: .now() + 2.0` — no entiendo cómo funciona. Por ejemplo, si necesito ejecutar código después de 0.5 segundos, ¿simplemente escribo `.now() + 0.5`? ¿O hay algún inconveniente con el retraso en hilos en segundo plano?
También quiero preguntar: ¿cómo cancelar correctamente una tarea programada? En Objective-C podía guardar dispatch_block_t y luego...
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Manejo de errores en Go: try/catch y más allá — guía completa
Principales errores de los desarrolladores principiantes de Swift: de la A a la Z
Java en todas partes: cómo escribir código una vez y ejecutarlo en Windows, Linux y macOS
Clausuras en bucles: cómo no volverse loco al capturar variables