Sobes.tech
Junior — Middle

Quel est le rôle des références faibles (weak) et non possédées (unowned) dans la gestion de la mémoire dans les langages de programmation?

sobes.tech IA

Réponse de l'IA

Les références faibles (weak) et non possédées (unowned) sont utilisées pour gérer la mémoire et prévenir les cycles de références qui peuvent entraîner des fuites de mémoire.

  • Références weak : ce sont des références qui n'augmentent pas le compteur de références de l'objet. Si l'objet pointé par la référence weak est supprimé, la référence weak devient automatiquement nil (en Swift). Cela est utile pour éviter les cycles forts, par exemple entre un délégué et son propriétaire.

  • Références unowned : ne augmentent pas non plus le compteur de références, mais on suppose que l'objet existe toujours lors de l'utilisation de la référence. Si l'objet a déjà été supprimé, accéder à la référence unowned entraînera une erreur (crash). Utilisées lorsque le cycle de vie de l'objet référencé est garanti d'être plus long que la référence.

Exemple en Swift :

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // weak, pour éviter le cycle
}

Ici, la référence weak empêche de maintenir en mémoire l'objet Person s'il n'est plus nécessaire.