На iPhone, если вы хотите создать экземпляр класса с заданным именем класса, вы можете использовать функцию времени выполнения objc_lookUpClass.
Например, если у меня есть базовый класс BaseHandler и я хочу создать экземпляр объекта правого подкласса во время выполнения (в этом примере это жестко закодировано как MyHandler):
#import <objc/objc.h>
[...]
NSString *handlerClassName = @"MyHandler"
id handlerClass = objc_lookUpClass([handlerClassName
cStringUsingEncoding:[NSString defaultCStringEncoding]]);
BaseHandler *handler = (BaseHandler *) [[handlerClass alloc] init];