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.