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 деп жарыяланган, анткени батир жалдачсыз болбошу керек жана бул күчтүү шилтемелер циклин алдын алат.