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.