Есть ли способ получить класс по имени? - PullRequest
4 голосов
/ 15 ноября 2010

В Objective-C, есть ли способ получить класс и отправить ему сообщения, когда у вас есть имя класса в виде строки?Например, есть ли функция func где func(@"NSString") == [NSString class]?

Причина, по которой я хочу это знать, заключается в том, что я создаю библиотеку динамических компоновщиков для языка, на котором я работаю, и хочу, чтобыиметь интерфейс к библиотекам Objective-C.

Ответы [ 2 ]

13 голосов
/ 15 ноября 2010

Да - два, на самом деле. Если у вас есть платформа типа Foundation (например, из Cocoa, Cocoa Touch или GNUstep), вы можете использовать функцию NSClassFromString(), которая точно такая же, как ваша func. Если вы не хотите зависеть от фреймворка, есть аналогичная функция времени выполнения, objc_getClass(), которая принимает const char* и возвращает именованный класс (или nil, если ничего не найдено).

2 голосов
/ 15 ноября 2010

Вы можете использовать NSClassFromString(NSString className), чтобы получить объект класса от его имени.

Надеюсь, это поможет!

...