Назад к задачам
Вкусвилл АвтомаконПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
6
Определите недостатки в представленном Swift‑фрагменте №1
Компании, где спрашивали:
Условие задачи
В приведённом примере создаются два класса — 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