Sobes.tech
Junior — Middle

Haben Sie in Ihren Projekten Referenzvariablen wie Unowned verwendet?

sobes.tech KI

Antwort von AI

Ja, in iOS-Projekten habe ich referenzielle Variablen vom Typ unowned verwendet.

unowned ist eine Art schwacher Referenz, die den Referenzzähler nicht erhöht, aber annimmt, dass das referenzierte Objekt während der Nutzung dieser Referenz immer existieren wird.

Dies ist nützlich, um starke Referenzzyklen zu vermeiden, z.B. in Closures oder bei gegenseitigen Referenzen zwischen Objekten, wenn ein Objekt garantiert, länger zu leben als ein anderes.

Beispiel für die Verwendung von unowned in einem Closure:

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

Hier ist tenant als unowned deklariert, da die Wohnung ohne Mieter nicht existieren sollte, was eine zyklische starke Referenz verhindert.