Objective-класс C -> строка, подобная:[Имя класса NSArray] -> @“NSArray”
-
22-09-2019 - |
Вопрос
Я пытаюсь получить строковое имя класса из самого объекта класса.
// 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()
реализуется.
Не связан с StackOverflow