Sobes.tech
Junior — Middle

Unowned foydalanish dasturlashda ob'ektning hayot aylanishini boshqarishga qanday ta'sir qiladi?

sobes.tech AI

AIdan javob

iOS (Swift) da, unowned kalit so'z ob'ektga zaif referensni e'lon qilish uchun ishlatiladi, bu referensiya hisoblagichini oshirmaydi, lekin ob'ekt mavjud bo'lishini taxmin qiladi.

unowned dan foydalanish, xotira oqibati (memory leaks) olib keladigan tsikllarni (retain cycles) oldini olishga yordam beradi. weak ga qarshi, unowned referensiya opsional emas va ob'ekt bo'shatilgandan so'ng nil bo'lmaydi, shuning uchun uni faqat ob'ekt uzoqroq mavjud bo'lishiga kafolat berilgan hollarda ishlatish kerak.

Misol:

class Person {
    var name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
}

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, Apartment Person ga unowned referens tutadi, bu tsiklni oldini oladi va Person har doim mavjud bo'lishi taxmin qilinadi, Apartment mavjud bo'lsa. Agar Person avvalroq o'chirilsa, unowned referensga kirish ish vaqtida xato beradi.