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?

Foi útil?

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