Back to questions
СБЕР
Яндекс Маркет
МТС
Simbirsoft
Junior — Middle
80
В каких ситуациях следует использовать ключевое слово `unowned` в Swift?
Companies where asked
Uzum
bip.ru
Answer from AI
sobes.tech AI
Ключевое слово unowned в Swift используется для объявления слабой ссылки, которая не является опциональной и не увеличивает счетчик ссылок на объект.
Используется в ситуациях, когда существует циклическая ссылка между объектами, но при этом гарантируется, что объект, на который ссылаются, будет существовать дольше, чем ссылка unowned.
Например, в отношениях «родитель — потомок», где потомок хранит unowned ссылку на родителя, чтобы избежать цикла:
class Parent {
var child: Child?
}
class Child {
unowned let parent: Parent
init(parent: Parent) {
self.parent = parent
}
}
let dad = Parent()
let kid = Child(parent: dad)
dad.child = kid
Если объект, на который ссылается unowned, будет удалён, попытка доступа к этой ссылке приведёт к ошибке времени выполнения. Поэтому unowned подходит, когда жизненный цикл объекта гарантированно длиннее ссылки на него.