Junior — Middle
104
Бағдарламалау тілдерінде, мысалы, Swift-те, меншіктемейтін сілтемелердің қандай түрлері бар?
Сұралған компаниялар
Touch Instinct
AI-дан жауап
sobes.tech AI
В Swift существуют несколько типов ссылок без владения (unowned references), которые используются для предотвращения циклов сильных ссылок, но при этом не увеличивают счетчик владения объекта:
-
unowned — небезопасная не владеющая ссылка, предполагается, что объект существует дольше, чем ссылка. Если объект удалён, обращение к unowned вызовет ошибку времени выполнения.
-
weak — слабая ссылка, которая автоматически становится nil, если объект удаляется. Используется, когда ссылка может стать nil.
Пример:
class Person {
var apartment: Apartment?
}
class Apartment {
unowned let tenant: Person
init(tenant: Person) {
self.tenant = tenant
}
}
let john = Person()
let apt = Apartment(tenant: john)
john.apartment = apt
Здесь Apartment хранит unowned ссылку на Person, предполагая, что Person будет существовать дольше. Если Person удалится раньше, обращение к tenant вызовет ошибку.