Что такое Value Type (тип-значение) в Swift?

«Что такое Value Type (тип-значение) в Swift?» — вопрос из категории Swift Core, который задают на 40% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Value Type — это тип, экземпляр которого хранит непосредственное значение данных. При присваивании или передаче в функцию/метод создается новая независимая копия этого значения.

Ключевые характеристики:

  • Копирование по значению (Copy-on-Assignment): Каждая переменная имеет свою собственную копию данных.
  • Изменения изолированы: Модификация копии не влияет на оригинал.
  • Хранение: Как правило, размещаются в стеке (быстрее), но могут быть и в куче, если это необходимо.

Примеры в Swift:

  • Все базовые типы: Int, Double, Bool, String.
  • Коллекции из стандартной библиотеки: Array, Dictionary, Set (они реализованы как структуры).
  • Пользовательские struct и enum.

Пример:

struct Point {
    var x: Int
    var y: Int
}

var pointA = Point(x: 10, y: 20)
var pointB = pointA // Создается ПОЛНАЯ КОПИЯ значения

pointB.x = 100 // Меняется только pointB
print(pointA.x) // 10 (pointA остался неизменным)
print(pointB.x) // 100

Преимущества: Потокобезопасность, предсказуемость поведения и отсутствие неявного разделяемого состояния.