Этот вопрос проверяет понимание фундаментального различия между типами данных в Swift и того, как они ведут себя при копировании и передаче.
Value types копируются при передаче или присваивании, а reference types передаются по ссылке. В Swift структуры (struct) и перечисления (enum) — это value types, а классы (class) — reference types.
Value types (типы значений):
Копируются при присваивании или передаче в функцию.
Изменения не влияют на оригинал.
Примеры: struct, enum, Int, String, Array, Bool.
Reference types (ссылочные типы):
Передаются по ссылке.
Изменения внутри функции или переменной отражаются на оригинале.
Примеры: class, NSObject, UIView.
Пример:
struct ValueType {
var number: Int
}
class ReferenceType {
var number: Int
init(number: Int) { self.number = number }
}
var a = ValueType(number: 10)
var b = a
b.number = 20
print(a.number) // 10
var c = ReferenceType(number: 10)
var d = c
d.number = 20
print(c.number) // 20Когда использовать:
Используйте value types, когда вам важна безопасность копий и предсказуемость.
Используйте reference types, если нужно совместное использование состояния.