Sobes.tech
Junior — Middle

Kas teie projektides on kasutatud viitamismuutujat nagu Unowned?

sobes.tech AI

Vastus AI-lt

Jah, iOS projektides olen kasutanud unowned tüüpi viiteid.

unowned on nõrk viide, mis ei suurenda viidete loendurit, kuid eeldab, et viidatud objekt eksisteerib alati selle viite kasutamise ajal.

See on kasulik tugevate viidetsüklite vältimiseks, näiteks sulgudes või vastastikustes viidetes objektide vahel, kui üks objekt garanteerib, et see elab kauem kui teine.

Näide unowned kasutamisest sulgus:

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

Siin tenant on deklareeritud kui unowned, kuna korter ei tohiks eksisteerida ilma üürnikuta, ja see takistab tugeva viidetsükli tekkimist.