Junior — Middle
Pouvez-vous expliquer comment la mémoire occupée par un objet est libérée dans le système?
sobes.tech IA
Réponse de l'IA
En iOS, la libération de mémoire des objets se fait principalement par le mécanisme ARC (Automatic Reference Counting).
Chaque objet en mémoire a un compteur de références : le nombre de références actives à lui. Lorsqu'une référence à un objet est créée, le compteur augmente ; lorsqu'une référence est supprimée, il diminue. Lorsque le compteur atteint zéro, l'objet est automatiquement libéré de la mémoire.
Exemple :
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Alex") // compteur de références = 1
var person2 = person1 // compteur de références = 2
person1 = nil // compteur de références = 1
person2 = nil // compteur de références = 0, l'objet est libéré
S'il existe des références cycliques (par exemple, deux objets qui se réfèrent mutuellement), ARC ne pourra pas libérer la mémoire automatiquement. Pour résoudre ce problème, on utilise des références faibles (weak) ou non propriétaires (unowned), qui n'augmentent pas le compteur.