Ответ 1
NSString *name = NSStringFromClass ([NSArray class]);
Вы даже можете вернуться в другую сторону:
Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
Я пытаюсь получить строковое имя класса из самого объекта класса.
// 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()
.