Sobes.tech
Junior — Middle

Kunt u een voorbeeld geven van wanneer de `unowned`-operator in Swift wordt gebruikt?

sobes.tech AI

Antwoord van AI

De unowned operator in Swift wordt gebruikt om een niet-optionele zwakke verwijzing te declareren die ervan uitgaat dat het object waarnaar wordt verwezen altijd bestaat tijdens toegang. Dit is handig om sterke referentiecycli te voorkomen, bijvoorbeeld bij het werken met closures of onderling verwijzende objecten, wanneer één van de objecten gegarandeerd langer leeft dan de ander.

Voorbeeld van gebruik van unowned in een closure:

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) woont in appartement \(apt.number)")
        } else {
            print("\(self.name) heeft geen appartement")
        }
    }
}

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() // Output: John woont in appartement 101

Hier wordt unowned gebruikt voor de verwijzing van Apartment naar Person, om een sterke referentiecyclus te voorkomen, ervan uitgaande dat Person langer leeft dan Apartment.