Sobes.tech
Junior — Middle

Est-il possible de mettre en œuvre un mécanisme qui suit les objets à l'aide de références faibles, sans empêcher leur suppression par le ramasse-miettes?

sobes.tech IA

Réponse de l'IA

Oui, sur iOS (et en Swift), il existe un mécanisme de références faibles (weak references), qui permet de suivre les objets sans les maintenir en mémoire et d'éviter leur suppression par le ramasse-miettes (ARC).

Une référence faible n'augmente pas le compteur de références de l'objet, donc lorsque toutes les références fortes sont supprimées, l'objet est libéré de la mémoire.

Exemple d'utilisation d'une référence faible en Swift :

class Person {
    let name: String
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    weak var tenant: Person?  // référence faible
}

var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person

person = nil  // l'objet Person sera supprimé, car il n'y a plus de références fortes

print(apartment?.tenant)  // nil

Ainsi, les références faibles permettent de suivre les objets sans empêcher leur suppression.