Junior — Middle
Swift-də kodda `unowned` operatorunun istifadə olunduğu nümunə verə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də unowned operatoru zəif istinadın qeyri-optional elan olunması üçün istifadə olunur və ona istinad edən obyektin hər zaman mövcud olduğunu fərz edir. Bu, güclü istinad döngələrini qarşısını almaq üçün faydalıdır, məsələn, bağlamalar və ya bir-birinə istinad edən obyektlərlə işləyərkən, bir obyektin digərindən daha uzun müddət yaşaması zəmanət verilmişsə.
unowned istifadə nümunəsi bağlamada:
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) mənzilində yaşayır \(apt.number)")
} else {
print("\(self.name) mənzili yoxdur")
}
}
}
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() // Nəticə: John mənzilində yaşayır 101
Burada, unowned Apartment-dən Person-ə istinad üçün istifadə olunur, güclü istinad döngəsini qarşısını almaq üçün və Person-in Apartment-dən daha uzun yaşaması fərz edilir.