Ajouter une entrée dans un dictionnaire et copie d'objet
Bonjour à toutes et à tous,
J'essaie d'ajouter des entrées dans mon dictionnaire avec "setObject :forKey" mais j'ai remarqué un truc bizarre (pour moi) car c'est la première fois ou je le vois.
En effet le quand je passe un object en tant que "key", il le copie avant de le setter.
Autrement dit, si j'ai un object A (0x..a) et je fait [dico setObject:@test forKey:A], j'ai un dictionnaire avec la clé A (0x...7) mais qui n'a pas la même référence que mon object d'origine.
Est ce qu'il y a un moyen de ne pas faire une copie mais mettre l'object lui même en tant que clé pour le dictionnaire.?
Bonne journée.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Les clés d'un dictionnaire sont des objets conformes au protocole NSCopying.
Si tu veux un autre fonctionnement, jette un oe“il à NSMapTable.
Merci Céroce pour ta réponse, j'ai pu réglé mon problème avec le NSMapTable.
Pour info, comme déjà dit sur ce forum, NSCache fonctionne comme NSDico mais ne copie pas le clés.
Le fait que l'objet ait changé n'est pas forcément un problème.
Par exemple, j'utilise ce mécanisme pour associer deux objets dans mon appli, l'objet en question (la clé) et l'objet qui en est responsable.
Je t'accorde qu'il faut bien savoir ce qu'on fait en matière de gestion mémoire, et que c'est une approche risquée par principe.