Copy-on-Write (COW) — это стратегия оптимизации памяти, которую использует Swift для value types, таких как Array, Dictionary и String. Вместо того чтобы копировать данные сразу при присваивании, несколько переменных используют одно и то же базовое хранилище до тех пор, пока одна из них не будет изменена.
Когда ты присваиваешь value type новой переменной, реальная копия не создаётся — обе переменные указывают на одно и то же хранилище по ссылке. Копия создаётся только в момент изменения.
Перед тем как применить изменение, Swift внутренне проверяет, является ли ссылка на хранилище уникальной, используя:
isKnownUniquelyReferenced(&myObject)
Такой подход позволяет Swift сохранять value semantics (каждая переменная ведёт себя как независимая копия), избегая затрат на производительность при копировании больших структур данных без необходимости.
var a = [1, 2, 3]
var b = a // Пока копии нет — a и b используют общее хранилище
b.append(4) // Копия создаётся здесь, b получает своё хранилище
COW — это баланс между эффективностью памяти и корректностью. Это гарантирует, что:
Copy-on-Write в Swift откладывает фактическое копирование данных до момента выполнения операции мутации, позволяя нескольким переменным делить одно и то же базовое хранилище до тех пор, пока одна из них не будет изменена.
Новый — ещё не проверен сообществом
Вы