Sobes.tech
Junior — Middle

Դուք օգտագործե՞լ եք ձեր նախագծերում Unowned տեսակի հղումային փոփոխականներ։

sobes.tech AI

Պատասխան AI-ից

Այո, iOS նախագծերում ես օգտագործել եմ unowned տեսակի հղումներ:

unowned — դա թույլ հղում է, որը չի ավելացնում հղումների հաշվիչը, բայց ենթադրում է, որ հղվող օբյեկտը միշտ կլինի օգտագործման ժամանակ:

Այսը օգտակար է ուժեղ հղումների ցիկլերը կանխելու համար, օրինակ, փակման մեջ կամ փոխադարձ հղումներում օբյեկտների միջև, երբ մեկը երաշխավորում է, որ այն երկար ապրելու է մյուսից:

unowned օգտագործման օրինակ՝

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

Այստեղ, tenant հռչակված է որպես unowned, քանի որ բնակարանը չպետք է գոյություն ունենա առանց վարձուի, և դա կանխում է ուժեղ հղումների ցիկլը։