Диспетчеризация методов (method dispatch) в Swift определяет, какой именно код будет выполнен при вызове метода объекта. Выбор типа диспетчеризации происходит в момент компиляции Swift-кода.
Существуют три основных типа диспетчеризации в Swift:
Прямая диспетчеризация (Direct Dispatch):
struct и enum (т.к. они не поддерживают наследование классов).final классов.private классов (internal и public не поддерживают прямую диспетчеризацию).Диспетчеризация по таблице (Table Dispatch):
class, когда требуется полиморфизм и наследование.swift
Диспетчеризация по свидетельству (Witness Table Dispatch):
protocol).swift
Условия, влияющие на выбор:
struct, enum, class, protocol.final, private, internal, public.Компилятор Swift старается использовать прямую диспетчеризацию, где это возможно, для оптимизации производительности, но при необходимости поддержки полиморфизма и наследования переключается на table или witness table dispatch. Явное обозначение методов как final или private позволяет принудительно использовать прямую диспетчеризацию.