Sobes.tech
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.