Pregunta

Estoy intentando obtener un nombre de cadena de una clase del propio objeto de clase.

// For instance
[NSArray className]; // @"NSArray"

he encontrado object_getClassName(id obj) pero eso requiere que se le pase una instancia, y en mi caso es un trabajo innecesario.

Entonces, ¿cómo puedo obtener una cadena de un objeto de clase y no ¿una instancia?

¿Fue útil?

Solución

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

Incluso puede volver a la inversa:

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

Otros consejos

Aquí está una manera diferente a hacerlo con un poco menos de escribir:

NSString *name = [NSArray description];

Tenga en cuenta esta alternativa:

const char *name = class_getName(cls);

Es mucho más rápido, ya que no tiene que alloc objeto NSString y convertir ASCII a cualquier representación es NSString. Así es cómo se implementa NSStringFromClass().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top