Sobes.tech
Junior — Middle

Կարող եք տալ օրինակ, երբ Swift- ի կոդում օգտագործվում է `unowned` օպերատորը?

sobes.tech AI

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

Swift- ում unowned օպերատորը օգտագործվում է թույլ չտվող հղում հայտարարելու համար, որը ենթադրում է, որ այն օբյեկտը, որի վրա հղում է, միշտ առկա է մուտքի ժամանակ: Սա օգտակար է ուժեղ հղումային ցիկլերը կանխելու համար, օրինակ, փակման կամ փոխկապակցված օբյեկտների դեպքում, երբ մեկը մյուսից երկար է ապրում:

Օրինակ՝ unowned օգտագործումը փակման մեջ:

class Person {
    let name: String
    var apartment: Apartment?

    init(name: String) {
        self.name = name
    }

    lazy var printApartment = { [unowned self] in
        if let apt = self.apartment {
            print("\(self.name) ապրում է բնակարանում \(apt.number)")
        } else {
            print("\(self.name) չունի բնակարան")
        }
    }
}

class Apartment {
    let number: Int
    unowned let tenant: Person

    init(number: Int, tenant: Person) {
        self.number = number
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1

john.printApartment() // Արդյունք՝: John ապրում է բնակարանում 101

Այստեղ, unowned օգտագործվում է Apartment-ից Person-ին հղում կատարելու համար, որպեսզի կանխվի ուժեղ հղումային ցիկլը, ենթադրելով, որ Person-ը երկար է ապրում, քան Apartment-ը։