Какой будет результат вывода в задаче №18

Обе переменные покажут содержимое с 0 и 1: NSMutableArray — ссылочный изменяемый объект, а arr2 = arr1 копирует ссылку.

Короткий ответ

Что ответить на собеседовании

Обе переменные покажут содержимое с 0 и 1: NSMutableArray — ссылочный изменяемый объект, а arr2 = arr1 копирует ссылку.

Подробный разбор

Ответ с пояснениями

Условие

В данном примере рассматривается поведение изменяемого массива NSMutableArray в Swift при присваивании одной переменной другой. Нужно понять, как изменятся обе переменные после добавления элемента.

var arr1 = NSMutableArray(array: ["0"])
var arr2 = arr1
arr2.add("1")
print(arr1, arr2)

Ответ

Обе переменные покажут содержимое с 0 и 1: NSMutableArray — ссылочный изменяемый объект, а arr2 = arr1 копирует ссылку.

arr2.add("1") изменяет тот же экземпляр, который доступен через arr1. Точный формат description Foundation может быть многострочным, но данные у обоих выражений одинаковы: ("0", "1"). Это отличается от Swift Array с value semantics и copy-on-write. Для независимого NSMutableArray требуется явная mutableCopy; она копирует контейнер, но не обязательно глубоко клонирует вложенные объекты.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее