¿Por qué el código actual con un bucle infinito for en main no funciona? ¿Cómo corregirlo?
sobes.tech AI
Respuesta de la IA
Si en el main de una aplicación iOS hay un ciclo for infinito, la aplicación no funciona porque el hilo principal se bloquea con ese ciclo y no puede procesar eventos de UI ni mensajes del sistema.
En iOS, el ciclo de eventos principal (run loop) es gestionado por el sistema, y bloquear el hilo principal provoca que la interfaz se congele.
Para solucionar esto, debes eliminar el ciclo infinito de main y permitir que el sistema gestione el ciclo de eventos. Si necesitas realizar tareas repetitivas, es mejor usar temporizadores (Timer), colas en segundo plano (DispatchQueue) u otros mecanismos asíncronos.
Ejemplo de código incorrecto:
func main() {
for { // ciclo infinito
// hacemos algo
}
}
Enfoque correcto:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
// tarea periódica
}
return true
}
}
De esta forma, no bloqueamos el hilo principal y usamos mecanismos del sistema para tareas repetitivas.