Junior — Middle
Loyihalaringizda Unowned kabi referens o'zgaruvchilarni ishlatdingizmi?
sobes.tech AI
AIdan javob
Ha, iOS loyihalarida unowned turidagi referens o'zgaruvchilarni ishlatganman.
unowned — bu zaif referens turidir, u referens hisoblagichini oshirmaydi, lekin u ko'rsatilgan ob'ekt har doim mavjud bo'lishini taxmin qiladi.
Bu kuchli referens sikllarini oldini olish uchun foydalidir, masalan, yopilishlar yoki ob'ektlar o'rtasidagi o'zaro referensiyalar paytida, 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
}
}
class Apartment {
let unit: String
unowned let tenant: Person
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt
Bu yerda, tenant unowned sifatida e'lon qilingan, chunki kvartira ijarachisiz mavjud bo'lmasligi kerak va bu kuchli referens siklini oldini oladi.