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

Определите недостатки в представленном Swift‑фрагменте №1

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

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

В приведённом примере создаются два класса — Person и Pet. Класс Person хранит имя и опциональную ссылку на питомца, а класс Pet хранит имя и слабую ссылку на владельца. После создания экземпляров john (персона) и dog (питомца) они взаимно связываются: john.pet = dog и dog.owner = john. Проанализируйте код и укажите, какие потенциальные проблемы могут возникнуть (например, связанные с управлением памятью, сильными/слабыми ссылками, опциональностью и т.п.).

import Foundation

class Person {
    var name: String
    var pet: Pet?

    init(name: String) {
        self.name = name
    }
}

class Pet {
    var name: String
    weak var owner: Person?

    init(name: String) {
        self.name = name
    }
}

var john = Person(name: "John")
var dog = Pet(name: "Buddy")

john.pet = dog
dog.owner = john