Ответ
Классы в Swift являются reference type (ссылочным типом).
Семантика ссылки: При присваивании экземпляра класса новой переменной или передаче в функцию копируется ссылка на один и тот же объект в памяти. Все переменные ссылаются на одни и те же данные.
Пример:
class Person {
var name: String
init(name: String) { self.name = name }
}
let alice = Person(name: "Alice")
let bob = alice // bob ссылается на тот же объект, что и alice
bob.name = "Bob" // Меняем свойство объекта
print(alice.name) // "Bob" - изменение видно через alice
| Сравнение с Value Types (Структуры, Перечисления): | Аспект | Класс (Reference) | Структура (Value) |
|---|---|---|---|
| Копирование | Копируется ссылка | Копируется всё значение | |
| Изменение | Изменения видны всем | Изменения локальны для копии | |
| Наследование | Поддерживается | Не поддерживается | |
| Идентичность | Проверяется === |
Сравнивается по значению == |
Управление памятью: Для экземпляров классов используется Automatic Reference Counting (ARC).