> Что копируется, а что передается по ссылке в Swift (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Avito

Стек: iOS, Swift

> Пример ответа

В Swift передача параметров в функции и присваивание работают по значению для структур (struct), перечислений (enum) и базовых типов (Int, String, Array, Dictionary, Set). Это означает, что при передаче такого объекта создается его копия. Однако копирование происходит лениво (copy-on-write) для коллекций: реальное копирование выполняется только при изменении копии.

Для классов (class) и замыканий (closure) передача идет по ссылке: переменная хранит ссылку на объект в куче, и при присваивании или передаче в функцию копируется только сама ссылка, а не данные. Таким образом, изменения через любую ссылку влияют на один и тот же объект.

Исключение - функции с модификаторами inout: они передают параметр по ссылке, но это явное поведение, а не стандартное.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью