Sobes.tech
Junior — Middle

Swift кодунда `unowned` оператору качан колдонулат деп мисал келтире аласызбы?

sobes.tech AI

AIден жооп

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

unowned колдонуу мисалы жабык циклде:

class Person {
    let name: String
    var apartment: Apartment?

    init(name: String) {
        self.name = name
    }

    lazy var printApartment = { [unowned self] in
        if let apt = self.apartment {
            print("\(self.name) батирде жашайт \(apt.number)")
        } else {
            print("\(self.name) батирге ээ эмес")
        }
    }
}

class Apartment {
    let number: Int
    unowned let tenant: Person

    init(number: Int, tenant: Person) {
        self.number = number
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1

john.printApartment() // Натыйжа: John батирде жашайт 101

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