Обе переменные покажут содержимое с 0 и 1: NSMutableArray — ссылочный изменяемый объект, а arr2 = arr1 копирует ссылку.
Какой будет результат вывода в задаче №18
Обе переменные покажут содержимое с 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; она копирует контейнер, но не обязательно глубоко клонирует вложенные объекты.