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.