Массивы (Array) в Swift являются структурами (struct), а структуры — типами значения (Value Types). При присваивании или передаче массива производится его копирование.
Однако, для оптимизации производительности, система копирования массива имеет поведение Copy-on-Write. Это означает, что фактическая копия данных массива происходит только при первой модификации одной из копий. До этого момента обе копии массива совместно используют одно и то же хранилище данных.
Типы значения: Struct, Enum, Int, String, Double, Bool. Ссылочные типы: Class, Function, Closure.
Пример иллюстрирующий Copy-on-Write:
swift