Junior — Middle
Da li ste koristili referencijalne promenljive tipa Unowned u svojim projektima?
sobes.tech АИ
Одговор од АИ
Da, u iOS projektima sam koristio referencijalne promenljive tipa unowned.
unowned je vrsta slabe reference koja ne povećava brojač referenci, ali pretpostavlja da će objekat na koji se odnosi uvek postojati tokom korišćenja te reference.
Ovo je korisno za sprečavanje cikličnih jakih referenci, na primer, u zatvaranjima ili kod međusobnih referenci između objekata, kada jedan objekat garantuje da će duže živeti od drugog.
Primer korišćenja unowned u zatvaranju:
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
Ovde je tenant deklarisan kao unowned, jer stan ne bi smeo da postoji bez stanara, čime se sprečava ciklička jaka referenca.