Junior — Middle
Comment peut-on créer une structure de données qui conserve des références faibles aux objets?
sobes.tech IA
Réponse de l'IA
Pour créer une structure de données qui stocke des références faibles aux objets dans iOS (Swift/Objective-C), on utilise la classe NSMapTable ou NSHashTable avec l'option de références faibles.
Les références faibles permettent aux objets d'être libérés de la mémoire s'il n'y a pas de références fortes, évitant ainsi les fuites de mémoire.
Exemple en Swift avec NSMapTable :
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // maintenant l'objet peut être supprimé de la mémoire
if let value = mapTable.object(forKey: key) {
print("L'objet existe")
} else {
print("L'objet a été supprimé")
}
On peut aussi utiliser Weak wrapper — un wrapper avec une référence weak interne, si une structure de données personnalisée est nécessaire.
Ainsi, pour stocker des références faibles, on utilise NSMapTable avec la configuration weak-to-weak ou weak-to-strong, selon la tâche.