Типы значения (Value Types) хранят данные напрямую, и при присваивании или передаче создается их копия. Изменения в копии не влияют на оригинал. Примеры: struct, enum, tuple.
Ссылочные типы (Reference Types) хранят ссылку на одно и то же место в памяти. При присваивании или передаче копируется только ссылка. Изменения через одну ссылку видны через другую, так как обе указывают на один объект. Примеры: class, func, closure.
| Характеристика | Тип значения | Ссылочный тип |
|---|---|---|
| Хранение данных | Напрямую | Ссылка на данные в памяти |
| Присваивание/Передача | Копирование данных | Копирование ссылки |
| Изменение | Изменяется только копия | Изменяется оригинальный объект через любую ссылку |
| Классы для создания | struct, enum, tuple | class |
| Управление памятью | Автоматическое (стек, для мелких) | Ручное (ARC - Automatic Reference Counting) |
Пример:
swift