Objective-класс C -> строка, подобная:[Имя класса NSArray] -> @“NSArray”

StackOverflow https://stackoverflow.com/questions/2331983

Вопрос

Я пытаюсь получить строковое имя класса из самого объекта класса.

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

Я нашел object_getClassName(id obj) но для этого требуется передать ему экземпляр, а в моем случае это ненужная работа.

Итак, как я могу получить строку из объекта класса, и не пример?

Это было полезно?

Решение

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

Вы даже можете вернуться другим путем:

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

Другие советы

Вот другой способ сделать это, набрав немного меньше текста:

NSString *name = [NSArray description];

Рассмотрите эту альтернативу:

const char *name = class_getName(cls);

Это намного быстрее, так как ему не нужно выделять объект NSString и преобразовывать ASCII во что угодно NSString представление есть.Вот как NSStringFromClass() реализуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top