Sobes.tech
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.