it-swarm.com.ru

Класс Objective C -> строка как: [NSArray className] -> @ "NSArray"

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

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

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

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

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

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

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

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

const char *name = class_getName(cls);

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

1
wonder.mice

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

NSString *name = [NSArray description];
1
Sherwin Zadeh