Sobes.tech
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.