classe Objective-C -> string comme: [NSArray className] -> @ « NSArray »
-
22-09-2019 - |
Question
Je suis en train d'obtenir un nom de chaîne d'une classe de l'objet de la classe elle-même.
// For instance
[NSArray className]; // @"NSArray"
J'ai trouvé object_getClassName(id obj)
mais qui nécessite une instance être transmis à, et dans mon cas qui est un travail inutile.
Alors, comment puis-je obtenir une chaîne à partir d'un objet de classe, et pas une instance?
La solution
NSString *name = NSStringFromClass ([NSArray class]);
Vous pouvez même revenir dans l'autre sens:
Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
Autres conseils
Voici une autre façon de le faire avec un peu moins taper:
NSString *name = [NSArray description];
Considérez cette alternative:
const char *name = class_getName(cls);
Il est beaucoup plus rapide, car il n'a pas à alloc NSString et convertir ASCII à ce que la représentation est NSString
. C'est ainsi NSStringFromClass()
est mis en œuvre.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow