Sobes.tech
Junior — Middle

¿En qué se diferencian la asignación estática y dinámica en programación?

sobes.tech AI

Respuesta de la IA

La asignación estática (despacho estático) ocurre durante la compilación. El compilador sabe de antemano qué método será llamado y vincula directamente la llamada con la implementación específica. Esto proporciona un alto rendimiento, pero reduce la flexibilidad.

La asignación dinámica (despacho dinámico) ocurre durante la ejecución del programa. La llamada al método se determina por el tipo del objeto en tiempo de ejecución, lo que permite implementar polimorfismo y sobrescritura de métodos. En iOS, esto a menudo se realiza a través del mecanismo runtime de Objective-C, donde las llamadas a métodos se realizan mediante una tabla de mensajes.

Ejemplo en Swift:

class Animal {
    func sound() {
        print("Algún sonido")
    }
}

class Dog: Animal {
    override func sound() {
        print("Ladrido")
    }
}

let animal: Animal = Dog()
animal.sound() // Imprimirá "Ladrido" gracias a la asignación dinámica

Aquí, la llamada a sound() se determina en tiempo de ejecución, lo que es asignación dinámica.