Sobes.tech
Назад к вопросам
Junior — Middle
79

Каким образом реализуется привязка интерфейса к конкретной реализации во время выполнения программы?

Ответ от нейросети

sobes.tech AI

В 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() // Выведет: Данные из реального источника

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