DevPrep

Все темы › Язык Swift

Что такое copy-on-write (CoW)?

Middle PRO

Суть

Copy-on-write — оптимизация value-семантики: при присваивании копируется не буфер с данными, а только ссылка на него, и реальная копия делается перед первой мутацией, если буфер разделяют несколько владельцев. Снаружи это выглядит как честное копирование значения, но дешёвое.

Так устроены Array, Dictionary, Set, String, Data: внутри у них класс-буфер, а сама структура — маленькая обёртка со ссылкой.

var x = [1, 2, 3]
var y = x          // O(1): буфер общий
y.append(4)        // здесь O(n): копия буфера перед мутацией
print(x, y)        // [1, 2, 3] [1, 2, 3, 4]

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store