Back to questions
СБЕР
СБЕР Сбол
Суточно.ру
DNS
Avito
VK
Дзен
Simbirsoft
Junior — Middle
113
Можете объяснить, что подразумевается под термином 'Unowned' в контексте управления памятью?
Companies where asked
Winline
ITFB
О5.ru
Анор Банк
Umbrella IT
bip.ru
Answer from AI
sobes.tech AI
В контексте управления памятью в iOS (и Swift) термин "Unowned" означает слабую ссылку на объект, которая не увеличивает счетчик ссылок (retain count), но при этом предполагает, что объект существует во время использования этой ссылки.
Отличия от weak:
weakссылка может статьnil, если объект удаляется, и поэтому объявляется как опциональная.unownedссылка не является опциональной и не обнуляется автоматически. Если объект, на который ссылаетсяunowned, будет удалён, попытка доступа приведёт к ошибке времени выполнения (crash).
Используется, когда гарантируется, что время жизни объекта, на который ссылаются, дольше или равно времени жизни ссылки.
Пример:
class Owner {
var pet: Pet?
}
class Pet {
unowned let owner: Owner
init(owner: Owner) {
self.owner = owner
}
}
let owner = Owner()
owner.pet = Pet(owner: owner)
Здесь Pet хранит unowned ссылку на Owner, предполагая, что Owner живёт дольше Pet.