Sobes.tech
Junior — Middle

Vai jūsu projektos esat izmantojis atsauces mainīgos, piemēram, Unowned?

sobes.tech AI

Atbilde no AI

Jā, iOS projektos izmantoju unowned tipa atsauces.

unowned ir vāja atsauce, kas nepalielina atsauču skaitītāju, bet pieņem, ka objekts, uz kuru atsaucas, vienmēr pastāvēs tās izmantošanas laikā.

Tas ir noderīgi, lai novērstu stipru atsauču ciklus, piemēram, aizvērumos vai savstarpējās atsaucēs starp objektiem, kad viens objekts garantē, ka tas dzīvos ilgāk nekā cits.

unowned izmantošanas piemērs:

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

Šeit tenant ir deklarēts kā unowned, jo dzīvoklim nevajadzētu pastāvēt bez īrnieka, un tas novērš stipru atsauču ciklu.