objective c - Objective-C class-> string like:[NSArray className]-> @ "NSArray"
reflection metaprogramming (3)
Aquí hay una forma diferente de hacerlo con un poco menos de tipeo:
NSString *name = [NSArray description];
Estoy tratando de obtener un nombre de cadena de una clase del objeto de la clase en sí.
// For instance
[NSArray className]; // @"NSArray"
He encontrado object_getClassName(id obj)
pero eso requiere que se le pase una instancia, y en mi caso eso es un trabajo innecesario.
Entonces, ¿cómo puedo obtener una cadena de un objeto de clase, y no una instancia?
Considera esta alternativa:
const char *name = class_getName(cls);
Es mucho más rápido, ya que no tiene que asignar objetos NSString y convertir ASCII a la representación de NSString
. Así es como se implementa NSStringFromClass()
.
NSString *name = NSStringFromClass ([NSArray class]);
Incluso puedes volver por el otro lado:
Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];