Comment la gestion de la mémoire pour les types de référence fonctionne-t-elle en Swift?
sobes.tech IA
Réponse de l'IA
En Swift, la gestion de la mémoire pour les types de référence (classes) est effectuée par le comptage automatique des références (ARC, Automatic Reference Counting). Chaque objet dans le tas maintient un compteur de références : le nombre de références actives à cet objet. Lorsqu'une nouvelle référence à un objet est créée, le compteur augmente, et lorsqu'une référence n'est plus utilisée, il diminue. Lorsque le compteur atteint zéro, l'objet est automatiquement supprimé de la mémoire.
Exemple :
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var a: Person? = Person(name: "Alice") // compteur = 1
var b = a // compteur = 2
b = nil // compteur = 1
a = nil // compteur = 0, objet supprimé
Il est important d'éviter les cycles de références (cycles de rétention), où deux objets se réfèrent mutuellement, ce qui empêche la libération de la mémoire. Pour cela, on utilise des références faibles (weak) et non propriétaires (unowned).
Les types de valeur (structures, énumérations) sont stockés dans la pile et copiés lors de l'assignation, donc ARC ne s'applique pas à eux.