Clase Objective-C -> cadena como:[Nombre de clase NSArray] -> @“NSArray”
-
22-09-2019 - |
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?
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