Sobes.tech
Junior — Middle

Масалан, дар коди Swift кай вақт оператори `unowned` истифода мешавад, мисол дода метавонед?

sobes.tech AI

Ҷавоб аз AI

оператори unowned дар Swift барои эълон кардани истиноди суст истифода мешавад, ки опсионалӣ нест ва тахмин мезанад, ки объекте, ки ба он ишора мекунад, ҳамеша ҳангоми дастрасӣ вуҷуд дорад. Ин барои пешгирии циклҳои қавии истинодҳо муфид аст, масалан, вақте ки бо пӯшидаҳо ё объектҳое кор мекунед, ки ба ҳамдигар ишора мекунанд, вақте ки яке аз объектҳо кафолат медиҳад, ки дарозтар аз дигаре зиндагӣ мекунад.

Масалан истифодаи 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 зиндагӣ мекунад.