Ответ
В Swift к Reference Type (ссылочным типам), помимо классов (class), относятся:
-
Замыкания (Closures) Функции и замыкания являются ссылочными типами. При захвате значений из окружающего контекста (
capture list) они хранят на них сильные ссылки, что может привести к циклам удержания.let closure: () -> Void // Переменная `closure` хранит ссылку на объект замыкания в куче. -
Актёры (Actors) (появились в Swift 5.5) Актёры — это ссылочный тип, предназначенный для безопасного доступа к изолированному состоянию из параллельных задач. Они обеспечивают безопасность данных в условиях многопоточности.
actor Counter { private var value = 0 func increment() { value += 1 } } // `Counter` — reference type с гарантиями изоляции.
Ключевые характеристики Reference Types:
- Передача по ссылке: При присваивании или передаче в функцию копируется только ссылка на один и тот же экземпляр в памяти.
- Управление памятью: Используется подсчет ссылок (ARC).
- Идентичность: Проверяется оператором
===.
Важно: Протоколы (protocol), перечисления (enum) и структуры (struct) являются Value Types (значимыми типами), даже если они содержат или используются со ссылочными типами внутри.