Назад к вопросам
СБЕР
СБЕР Сбол
Суточно.ру
DNS
Avito
VK
Дзен
Simbirsoft
Junior — Middle
112
Можете объяснить, что подразумевается под термином 'Unowned' в контексте управления памятью?
Компании, где спрашивали
Winline
ITFB
О5.ru
Анор Банк
Umbrella IT
bip.ru
Ответ от нейросети
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.