2010-04-25 15 views
5

Quiero utilizar el valor de referencia del objeto como clave en un diccionario, en lugar de una copia del valor del objeto. Entonces, esencialmente quiero almacenar un objeto asociado con una instancia particular de otro objeto en un diccionario y recuperar ese valor más adelante.Valor del puntero del objeto como clave en el diccionario

¿Esto es posible? ¿Está completamente en contra de la idea de NSDictionary? Puedo decir que probablemente me estoy acercando a esto de la manera incorrecta porque el diccionario quiere que implemente NSCopia en el objeto en sí, lo que realmente no tiene sentido en términos de lo que estoy haciendo. Puedo ver que lo que realmente debería hacer es ajustar el valor del puntero, pero eso parece un poco loco.

El asesoramiento sería apreciado.

Respuesta

2

NSMutableDictionary ha sido diseñado para tratar únicamente con instancias de objetos Objective-C. Por ejemplo, cuando llama al método setObject:forKey: llama al copyWithZone: en la clave y al retain en el valor.

Si desea tener una estructura de diccionario y ser capaz de manejar la clave y el valor arbitrarios, puede ir con CFMutableDictionary. Puede describir con precisión qué se hace con la clave y los valores; es lo suficientemente flexible como para manejar cadenas de punteros o eventos arbitrarios char *.

11

Creo que puede usar [NSValue valueWithPointer:object].

+0

que funcionó bastante bien, gracias! –

0

Esto hizo el truco para mí

aDictionary[@((intptr_t)object)] = ...; 
Cuestiones relacionadas