Junior — Middle
Жобаларыңызда Unowned сияқты сілтеме айнымалыларын қолдандыңыз ба?
sobes.tech AI
AI-дан жауап
Иә, iOS жобаларында мен unowned сияқты сілтеме түрлерін қолдандым.
unowned — бұл әлсіз сілтеменің түрі, ол сілтеме санын арттырмайды, бірақ ол сілтеме жасайтын объект әрқашан бар деп болжанады.
Бұл күшті сілтемелердің циклдарын болдырмау үшін пайдалы, мысалы, жабық циклдарда немесе объектілер арасындағы өзара сілтемелерде, бір объект басқа объектіден ұзақ өмір сүреді деп кепілдік берілген кезде.
unowned қолданудың мысалы:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt
Мұнда tenant unowned ретінде жарияланған, себебі пәтер тұрғынсыз өмір сүре алмайды, бұл күшті циклді сілтемені болдырмайды.