Junior — Middle
Ar savo projektuose naudojote nuorodinius kintamuosius kaip Unowned?
sobes.tech AI
Atsakymas iš AI
Taip, iOS projektuose naudoju unowned tipo nuorodas.
unowned yra silpna nuoroda, kuri nepadidina nuorodų skaitiklio, bet daro prielaidą, kad nuoroda nurodytas objektas visada egzistuos naudojimo metu.
Tai naudinga siekiant išvengti stiprių nuorodų ciklų, pavyzdžiui, uždarymuose arba tarpusavio nuorodose tarp objektų, kai vienas objektas garantuoja, kad jis gyvens ilgiau nei kitas.
unowned naudojimo pavyzdys:
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
Čia tenant deklaruotas kaip unowned, nes butas neturėtų egzistuoti be nuomininko, ir tai užkerta kelią stiprių nuorodų ciklui.