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