Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : dispatch, static, dynamic, vtable, objc, swift

Какие типы диспетчеризации существуют?

Проверяет знание механизмов вызова методов в Swift: статический и динамический диспетчеринг.

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

Swift поддерживает:

  • Static dispatch (через struct, enum, final, protocol extensions)

  • Dynamic dispatch (через классы и @objc)

  • Table dispatch (vtable) — по умолчанию в классах

  • Message dispatch — через Objective-C runtime

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

Static dispatch (время компиляции)

  • Используется для struct, enum, final class.

  • Быстрее, так как метод известен заранее.

  • Пример:

    struct A {
        	func run() {}
    }

Dynamic dispatch (во время выполнения)

  • Используется в обычных классах.

  • Работает через vtable (виртуальная таблица методов).

  • Пример:

    class A {
        	func run() {}
    }

Message dispatch (@objc)

  • Использует Objective-C runtime.

  • Методы вызываются по селекторам.

  • Медленнее, но необходим для взаимодействия с UIKit и KVO.

  • Пример:

    class A: NSObject {
        	@objc func run() {}
    }
  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Swift

    Swift

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

#dispatch

#static

#dynamic

#vtable

#objc

#swift

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

  • Аватар

    iOS Guru

    Roman Isakov

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