J'essaie d'obtenir un nom de chaîne d'une classe à partir de l'objet classe lui-même.
// For instance
[NSArray className]; // @"NSArray"
J'ai trouvé object_getClassName(id obj)
mais cela nécessite qu'une instance lui soit transmise, et dans mon cas, c'est un travail inutile.
Alors, comment puis-je obtenir une chaîne à partir d'un objet de classe et not une instance?
NSString *name = NSStringFromClass ([NSArray class]);
Vous pouvez même revenir en arrière:
Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
Considérez cette alternative:
const char *name = class_getName(cls);
C'est beaucoup plus rapide, car il n'est pas nécessaire d'allouer l'objet NSString et de convertir ASCII en une représentation quelconque de NSString
. C'est ainsi que NSStringFromClass()
est implémenté.
Voici une manière différente de le faire avec un peu moins de frappe:
NSString *name = [NSArray description];