Avatar ·

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...