Sobes.tech
Junior — Middle

Swift kodida `unowned` operatoridan foydalaniladigan misol keltira olasizmi?

sobes.tech AI

AIdan javob

Swift'da unowned operatori, kuchli referansni kamchilikni e'lon qilish uchun ishlatiladi va bu referans ko'rsatilgan ob'ekt har doim mavjud bo'lishini taxmin qiladi. Bu kuchli referans sikllarini oldini olish uchun foydalidir, masalan, yopilishlar yoki bir-biriga murojaat qiladigan ob'ektlar bilan ishlashda, bir ob'ekt boshqasidan uzoqroq yashashini kafolatlaganda.

unowned ni yopilishda ishlatish misoli:

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) kvartirada yashaydi \(apt.number)")
        } else {
            print("\(self.name) kvartiraga ega emas")
        }
    }
}

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() // Natija: John kvartirada yashaydi 101

Bu yerda, unowned Apartment dan Person ga murojaat uchun ishlatiladi, kuchli referans siklini oldini olish uchun, va Person ning Apartment dan uzoqroq yashashini taxmin qilinadi.