Вопрос проверяет понимание базовой модели типов Swift и различий в семантике копирования.
Value type копируется при передаче и изменении.
Reference type передаётся по ссылке и разделяет одно состояние.
Изменения value-типа не влияют на копию.
Изменения reference-типа видны всем, кто на него ссылается.
Разница между value и reference типами влияет на архитектуру, безопасность и предсказуемость кода.
Value type — тип с семантикой копирования.
Reference type — тип с семантикой ссылки.
Перед перечислением важно отметить, что value-типы копируются при передаче.
К value-типам относятся:
struct
enum
tuple
var a = Point(x: 1, y: 2)
var b = a
b.x = 10
a и b — независимые значения
изменение b не влияет на a
Reference-типы работают с общей областью памяти.
К ним относятся:
class
actor
let obj1 = User()
let obj2 = obj1
obj2.name = "Alex"
obj1 и obj2 указывают на один объект
изменения видны везде
Value-типы дают предсказуемость и безопасность. Reference-типы удобны для разделяемого состояния и сложных объектов.