Objective -C Class -> String como: [NSARRAY CLASSNAME] -> @“NSARRAY”
-
22-09-2019 - |
Pergunta
Estou tentando obter um nome de string de uma classe do próprio objeto de classe.
// For instance
[NSArray className]; // @"NSArray"
eu encontrei object_getClassName(id obj)
Mas isso exige que uma instância seja passada para ela e, no meu caso, é um trabalho desnecessário.
Então, como posso obter uma string de um objeto de classe e não uma instância?
Solução
NSString *name = NSStringFromClass ([NSArray class]);
Você pode até voltar para o outro lado:
Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
Outras dicas
Aqui está uma maneira diferente de fazer isso com um pouco menos de digitação:
NSString *name = [NSArray description];
Considere esta alternativa:
const char *name = class_getName(cls);
É muito mais rápido, pois não precisa alocá -lo no objeto NSString e converter ascii para qualquer NSString
representação é. É assim que NSStringFromClass()
é implementado.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow