Sobes.tech
Junior — Middle

Kako se razlikuju statička i dinamička dispatch u programiranju?

sobes.tech АИ

Одговор од АИ

Статичко руковођење (static dispatch) се дешава током компилације. Компилатор унапред зна који метод ће бити позван и директно повезује позив са одређеном реализацијом. Ово обезбеђује висок учинак, али смањује флексибилност.

Динамичко руковођење (dynamic dispatch) се дешава током извршавања програма. Позив метода се одређује по типу објекта у току извршавања, што омогућава имплементацију полиморфизма и преоптерећења метода. У iOS-у се често реализује преко механизма runtime Objective-C, где позиви метода пролазе кроз таблицу порука.

Пример у Swift-у:

class Animal {
    func sound() {
        print("Некој звук")
    }
}

class Dog: Animal {
    override func sound() {
        print("Лајање")
    }
}

let animal: Animal = Dog()
animal.sound() // Исписа "Лајање" захваљујући динамичком руковању

Овде, позив sound() се одређује током извршавања, што је пример динамичког руковања.