Назад к задачам
Junior — Senior
7

Что меняется при замене unowned на weak в отношениях объектов

Компании, где спрашивали:

АльфаБанк
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Вопрос: как изменится поведение программы, если вместо ссылки с модификатором unowned использовать weak? Рассмотрим пример на Swift, где один объект хранит сильную ссылку на другой, а второй объект держит обратную ссылку к первому.

class Individual {
    var fullName: String
    var device: Device?
    init(fullName: String) { self.fullName = fullName }
}

class Device {
    var type: String
    unowned var owner: Individual
    init(type: String, owner: Individual) {
        self.type = type
        self.owner = owner
    }
}

var individual: Individual? = Individual(fullName: "Alice")
individual?.device = Device(type: "iPhone", owner: individual!)
individual = nil

Опишите, что произойдёт с объектами после установки individual = nil при текущем использовании unowned, а затем объясните, как изменится ситуация, если заменить unowned var owner: Individual на weak var owner: Individual?.