только когда две взаимные сильные ссылки друг на друга, но и когда на главный объект есть сильная ссылка и сам главный объект имеет сильную ссылку на зависимый объект - вот пример, где зависимый(Car) не деинициализируется:
class Person1 {
var car: Car?
deinit { print("Person объект освобождается") }
}
class Car {
weak var owner: Person1?
deinit { print("Car объект освобождается") }
}
let otherPerson: Person1? //глобальная переменная
do {
var person = Person1()//+1 strong на класс Person1 (умирает после do блока)
var car = Car()//+1 strong на класс Car (умирает после do блока)
person.car = car //+1 strong на класс Car (умирает после do блока)
car.owner = person // weak (ARC не учитывает её)
otherPerson = person // +1 strong на класс Person1 (ОСТАЕТСЯ после do блока)
}
Значит определение: Цикл удержания - когда 2 объекта имеют взаимные сильные ссылки друг на друга - значит оно некорректно)?
А в чет оно некорректно то?) Ты возьми в расчет область видимости do {} и все встанет на свои места
Обсуждают сегодня