web-dev-qa-db-fra.com

Classe Objective-C -> chaîne comme: [NSArray className] -> @ "NSArray"

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?

127
Alex Wayne
NSString *name = NSStringFromClass ([NSArray class]);

Vous pouvez même revenir en arrière:

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
303
dreamlax

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é.

1
wonder.mice

Voici une manière différente de le faire avec un peu moins de frappe:

NSString *name = [NSArray description];
1
Sherwin Zadeh