Junior — Middle
Avez-vous utilisé des variables de référence comme Unowned dans vos projets?
sobes.tech IA
Réponse de l'IA
Oui, dans des projets iOS, j'ai utilisé des variables de référence de type unowned.
unowned est un type de référence faible qui n'augmente pas le compteur de références, mais suppose que l'objet référencé existera toujours pendant l'utilisation de cette référence.
C'est utile pour éviter les cycles de références fortes, par exemple dans les closures ou lors de références mutuelles entre objets, lorsqu'un objet garantit qu'il vivra plus longtemps qu'un autre.
Exemple d'utilisation de unowned dans une 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
Ici, tenant est déclaré comme unowned, car l'appartement ne doit pas exister sans le locataire, ce qui empêche une référence forte cyclique.