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?

Était-ce utile?

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
scroll top