Ответ 1
Class klass = NSClassFromString(classname);
if ([klass instancesRespondToSelector:@selector(create)]) {
[[klass alloc] create];
}
Могу ли я, однако, указать, сколько ужасных правил Objective-C вы нарушаете, выполняя вышеуказанное? Например, вы никогда не должны вызывать методы в экземпляре с выделенным, но не инициализированным. Статический анализатор Xcode предоставит вам всевозможные предупреждения об утечках памяти.
Лучшим вариантом будет следующее:
[[[klass alloc] init] create];
Но вы, похоже, подразумеваете, что не хотите вызывать init.
Можно рассмотреть метод класса: [klass create]
, который вернет не принадлежащий ему экземпляр klass
. Затем вы просто проверяете [klass respondsToSelector:@selector(create)]
перед его вызовом.