Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : dynamic, dispatch

Как изменится поведение, если метод объявлен в самом протоколе?

Вопрос проверяет понимание динамической диспетчеризации методов и полиморфизма в Swift.

Короткий ответ

Если метод объявлен в протоколе, используется динамическая диспетчеризация.
Будет вызвана реализация конкретного типа.
Поведение зависит от реального объекта, а не от типа переменной.
Это позволяет использовать полиморфизм.

Длинный ответ

Когда метод объявлен в самом протоколе, он становится обязательным требованием.

Определение

Метод-протокольное требование — это метод, который обязан быть реализован типом, соответствующим протоколу.

Пример

protocol Logger {
    func log()
}

extension Logger {
    func log() {
        print("default log")
    }
}

struct FileLogger: Logger {
    func log() {
        print("struct log")
    }
}

let logger: Logger = FileLogger()
logger.log()

Результат:

struct log

Почему поведение меняется

  1. Метод входит в контракт протокола

  2. Используется динамическая диспетчеризация

  3. Выбор реализации происходит во время выполнения

Когда используется default-реализация

Если тип не реализует метод, используется реализация из extension.

Краткий вывод

Методы, объявленные в протоколе, поддерживают полиморфизм. Это ключевой механизм построения гибкой архитектуры в Swift.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • Swift

    Swift

Ключевые слова

#dynamic

#dispatch

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.