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.