NSDictionary
es un conjunto de clases, como dijo Gendolkari y Class Clusters are documented.
Y, no, no puede depender de la identidad exacta de la subclase privada.
Por supuesto que debe ser capaz de hacer lo siguiente para determinar si se trata de un diccionario o no:
[myThingaMaHoover isKindOfClass: [NSDictionary class]];
O, al menos, que es un diccionario que implementa como una parte de la clase NSDictinoary
racimo.
Lo que no puede hacer es usar isKindOfClass:
o isMemberOfClass:
para determinar si un diccionario (o cadena, matriz o conjunto) es mutable o no. Considerar:
NSDictionary *d = [NSDictionary dictionaryWithObject: [[NSObject new] autorelease] forKey: @"Bob"];
NSMutableDictionary *m = [NSMutableDictionary dictionaryWithObject: [[NSObject new] autorelease] forKey: @"Bob"];
NSLog(@"d class: %@ %@ %@", [d class], [d superclass], [[d superclass] superclass]);
NSLog(@"m class: %@ %@ %@", [m class], [m superclass], [[m superclass] superclass]);
Este salidas:
d class: NSCFDictionary NSMutableDictionary NSDictionary
m class: NSCFDictionary NSMutableDictionary NSDictionary
d
y m
son ambas instancias de NSCFDictionary
que hereda de NSMutableDictionary
(que hereda de NSDictionary
).
Buena respuesta. Y si la siguiente pregunta es "Estoy tratando de determinar si un diccionario es mutable o no", entonces ... no ... tampoco puedes hacer eso. – bbum
¿No podría usar 'isMemberOfClass: [NSMutableDictionary class]' para eso? – GendoIkari
Sí, isMemberOfClass: se puede usar para determinar si un diccionario es mutable o no. – JustSid