Класс Objective C -> строка как: [NSArray className] -> @ "NSArray" - PullRequest
126 голосов
/ 25 февраля 2010

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

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

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

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

Ответы [ 3 ]

302 голосов
/ 25 февраля 2010
NSString *name = NSStringFromClass ([NSArray class]);

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

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
1 голос
/ 26 сентября 2017

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

const char *name = class_getName(cls);

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

1 голос
/ 29 декабря 2012

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

NSString *name = [NSArray description];
...