Назад к задачам
МТСПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
6
Какой вывод будет получен в примере №6
Компании, где спрашивали:
Условие задачи
В этом примере показывается, как работают массивы, содержащие объекты‑ссылки, при их копировании между разными контроллерами. Создаются два наследника базового контроллера, заполняются массивы строк и массивы представлений, после чего один из массивов изменяется во втором контроллере. Затем выводятся массивы первого контроллера, чтобы увидеть, какие изменения отразились на его данных.
class MyView: CustomStringConvertible {
let idx: UInt
var identifier: String
init(withIdx idx: UInt) {
self.idx = idx
identifier = String(idx)
}
var description: String {
return "(\(idx), \(identifier))"
}
}
class MyViewController {
var words = [String]()
var elements = [MyView]()
}
class FirstViewController: MyViewController {}
class SecondViewController: MyViewController {}
let firstVC = FirstViewController()
firstVC.words = ["One", "Two", "Three"]
firstVC.elements = [MyView(withIdx: 1), MyView(withIdx: 2), MyView(withIdx: 3)]
let secondVC = SecondViewController()
secondVC.words = firstVC.words
secondVC.elements = firstVC.elements
secondVC.words.popLast()
print(firstVC.words)
secondVC.elements.last?.identifier = "4"
print(firstVC.elements)