Sobes.tech
Junior — Middle

Vai varat sniegt piemēru, kad Swift kodā tiek izmantots operators `unowned`?

sobes.tech AI

Atbilde no AI

Swift valodā unowned operators tiek izmantots, lai deklarētu vājinātu atsauci, kas nav opcionala un pieņem, ka objekts, uz kuru tā attiecas, vienmēr pastāv piekļuves laikā. Tas ir noderīgi, lai novērstu stipru atsauces ciklu, piemēram, strādājot ar aizsargiem vai savstarpēji atsaucīgiem objektiem, kad viens no objektiem garantē, ka tas dzīvos ilgāk nekā otrs.

unowned izmantošanas piemērs aizsargā:

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) dzīvo dzīvoklī \(apt.number)")
        } else {
            print("\(self.name) nav dzīvokļa")
        }
    }
}

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() // Rezultāts: John dzīvo dzīvoklī 101

Šeit, unowned tiek izmantots, lai norādītu uz Apartment uz Person, lai novērstu stipru atsauces ciklu, pieņemot, ka Person dzīvos ilgāk nekā Apartment.