Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как влияет ключевое слово final на диспетчеризацию?

Вопрос проверяет понимание оптимизации вызовов методов и влияние ключевого слова final на производительность.

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

Объявление класса или метода как final запрещает наследование или переопределение, что позволяет компилятору использовать статическую (direct) диспетчеризацию вместо динамической. Это убирает накладные расходы виртуальных вызовов и ускоряет исполнение.

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

Динамическая vs статическая диспетчеризация:

  • Динамическая: метод выбирается во время выполнения (виртуальный вызов).

  • Статическая: метод разрешается на этапе компиляции (прямой вызов).

Роль final:

  • final class запрещает наследование.

  • final func запрещает переопределение в подклассах.

  • Компилятор уверен в конкретном типе и может убрать виртуальную таблицу (vtable) для таких методов.

Пример:

final class Logger {
    	func log(_ msg: String) { print(msg) }
}

// вызов Logger().log("Hello") — прямой, без lookup в vtable

Когда применять:

  • Для утилитарных классов и финальных точек расширения API.

  • Когда требуется максимальная производительность в горячих путях.

Вывод:
final улучшает производительность за счёт перехода от динамической к статической диспетчеризации и уменьшения накладных расходов на виртуальные вызовы.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

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

#final

#dispatch

#optimization

#static

#dynamic

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

  • Аватар

    iOS Guru

    Roman Isakov

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