2010-04-25 2 views
5

Je souhaite utiliser la valeur de référence de l'objet en tant que clé dans un dictionnaire, par opposition à une copie de la valeur de l'objet. Donc, je veux essentiellement stocker un objet associé à une instance particulière d'un autre objet dans un dictionnaire et récupérer cette valeur plus tard.Valeur du pointeur d'objet en tant que clé dans le dictionnaire

Est-ce possible? Est-ce complètement contre l'idée de NSDictionary? Je peux dire que je m'approche probablement de la mauvaise façon parce que le dictionnaire veut que j'implémente NSCopying sur l'objet lui-même, ce qui n'a pas vraiment de sens pour ce que je fais. Je peux voir que ce que je devrais vraiment faire est d'envelopper la valeur du pointeur, mais cela semble un peu fou.

Un conseil serait apprécié.

Répondre

2

NSMutableDictionary a été conçu pour traiter uniquement les instances d'objets Objective-C. Par exemple, lorsque vous appelez setObject:forKey: méthode appelle copyWithZone: sur la clé et retain sur la valeur.

Si vous voulez avoir une structure de dictionnaire et être capable de gérer des clés et des valeurs arbitraires, alors vous pouvez aller avec CFMutableDictionary. Vous pouvez décrire précisément ce qui est fait avec la clé et les valeurs; il est suffisamment flexible pour gérer les pointeurs arbitraires ou les chaînes d'événements char *.

11

Je pense que vous pouvez utiliser [NSValue valueWithPointer:object].

+0

Cela a fonctionné plutôt bien, merci! –

0

Cela a fait l'affaire pour moi

aDictionary[@((intptr_t)object)] = ...; 
Questions connexes