Я не думаю, что что-то не так с тем, что вы делаете (хотя использование перечислимого типа может быть менее подвержено ошибкам, чем #define
s), но вы можете проверить NSClassFromString()
, что делает название подсказывает:
- (id)newFruit:(NSString *)classString { //pass in @"FApple" or @"FPear"
Class fruitClass = NSClassFromString(classString);
return [[fruitClass alloc] init];
}
Впрочем, это может также слегка ухудшить производительность.