Estoy usando NSMutableDictionary para almacenar lo que efectivamente es un descriptor para ciertas clases, porque prefiero no desperdiciar la memoria de agregar el descriptor a cada instancia de clases, ya que solo un pequeño subconjunto de miles de objetos tendrá el descriptor.¿Existe alguna forma clara de usar punteros (ids) como claves en un NSMutableDictionary?
Desafortunadamente, dado:
MyClass* p = [MyClass thingy];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSString* description = @"blah"; //does this work? If not I'm just simplifying for this example.
[dict setObject:description forKey:p]; // BZZZZT a copy of p is made using NSCopying
MyClass* found = [dict objectForKey:p]; //returns nil, as p becomes a different copy.
Así que eso no funciona.
puedo entrar ilegalmente en él al pasar en un NSNumber así:
[dict setObject:description forKey:[NSNumber numberWithInt:(int)p]]; // this is cool
Pero eso es no sólo feo, pero propenso a errores, ya que no es estándar.
Teniendo esto en cuenta, ¿hay una forma clara de hacerlo?
Uso NSMapTable lugar. Ver: http: // nshipster.com/nshashtable-and-nsmaptable/ – LearnCocos2D