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-ը։