Sobes.tech
Junior — Middle

Жобаларыңызда Unowned сияқты сілтеме айнымалыларын қолдандыңыз ба?

sobes.tech AI

AI-дан жауап

Иә, iOS жобаларында мен unowned сияқты сілтеме түрлерін қолдандым.

unowned — бұл әлсіз сілтеменің түрі, ол сілтеме санын арттырмайды, бірақ ол сілтеме жасайтын объект әрқашан бар деп болжанады.

Бұл күшті сілтемелердің циклдарын болдырмау үшін пайдалы, мысалы, жабық циклдарда немесе объектілер арасындағы өзара сілтемелерде, бір объект басқа объектіден ұзақ өмір сүреді деп кепілдік берілген кезде.

unowned қолданудың мысалы:

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

Мұнда tenant unowned ретінде жарияланған, себебі пәтер тұрғынсыз өмір сүре алмайды, бұл күшті циклді сілтемені болдырмайды.