Sobes.tech
Junior — Middle

Kako se tokom izvršavanja programa vrši povezivanje interfejsa sa konkretnom implementacijom?

sobes.tech АИ

Одговор од АИ

У iOS често се използва моделът на делегиране (delegate) или протоколи (protocols) за свързване на интерфейса с конкретна реализация по време на изпълнение.

Протоколът определя набор от методи, а конкретният клас реализира този протокол. По време на изпълнение, обектът на интерфейса се позовава на обект, който реализира протокола, и извиква неговите методи. Това позволява да се променя реализацията без да се променя интерфейсът.

Пример на Swift:

protocol DataSource {
    func fetchData() -> String
}

class RealDataSource: DataSource {
    func fetchData() -> String {
        return "Данни от реалния източник"
    }
}

class ViewController {
    var dataSource: DataSource?

    func showData() {
        if let data = dataSource?.fetchData() {
            print(data)
        }
    }
}

let vc = ViewController()
vc.dataSource = RealDataSource() // свързване на реализацията по време на изпълнение
vc.showData() // Ще изведе: Данни от реалния източник

По този начин, интерфейсът (протоколът) и реализацията се свързват динамично.