У меня есть проект с несколькими целями для нескольких клиентов, однако большая часть приложения практически одинакова, и до сих пор мне удавалось контролировать различные потоки программ с помощью списков свойств, читаемых во время выполнения.
У одного клиента есть конкретное представление, которое мне нужно показать перед всеми остальными.
Моя проблема в том, что я получаю ошибку компоновки (на самом деле ошибку компоновки), потому что класс контроллера не входит в цель других клиентов, и я также не хочу его включать.Поэтому я искал некоторый контроль времени компиляции.
Я ищу что-то вроде
#ifdef client1target
... do something
#else
... do something else
#endif
Часть программы, с которой у меня сейчас проблемы, выглядит вот так
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *client = [myEnvVariables getShortName]; // In this class method I read the plist
if ([client isEqualToString:@"CLIENT1"]) {
Client1SpecificController *mm = [[Client1SpecificController alloc] initWithNibName:@"Client1SpecificView" bundle:nil];
// here happens the compile error because Client1SpecificController is not known at other targets
mm.view.frame = CGRectMake(0,20,320,460);
[window addSubview:mm.view];
[window makeKeyAndVisible];
} else {
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
}
return YES;
}
Ошибка выглядит следующим образом
undefined symbols:
"_OBJC_CLASS_$_Client1SpecificController", referenced from:
objc-class-ref-to-Client1SpecificController in myAppDelegate.o