Sobes.tech
Junior — Middle

Unowned колдонуу программалоодо объекттин жашоо мөөнөтүн башкарууга кандай таасир этет?

sobes.tech AI

AIден жооп

iOS (Swift) ичинде, unowned ачкыч сөзү объектке алсыз шилтемени жарыялоо үчүн колдонулат, ал шилтеменин санагычын көбөйтпөйт, бирок объекттин шилтеменин өмүрү бою бар экенине ишенет.

unowned колдонуу, эс тутумун агып кетүүдөн (retain cycles) алдын алууга жардам берет, ал эс тутумун жоготууга алып келиши мүмкүн. weakке караганда, unowned шилтеме опционал эмес жана объект бошотулгандан кийин nil болбойт, ошондуктан аны гана колдонуш керек, эгер объекттин узак убакыт бойдон бар экенине кепилдик берилсе.

Мисал:

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

Бул жерде, Apartment Personка unowned шилтемени сактайт, бул циклдин алдын алууга жардам берет жана Person дайыма бар деп эсептелет, анткени Apartment бар болгондо. Эгер Person эрте өчүрүлсө, unowned шилтемеге кирүү иштөө учурунда катаны пайда кылат.