我将我的 Xcode 项目编译为两个目标,为了简单起见,我们将它们称为“Foo”和“Bar”。我有一个超类和两个子类,我怎样才能干净地确保一个变量根据项目目标作为不同的子类返回?
例如,假设我有以下...
ViewManager.h //Super Class
FooViewManager.h //Foo Subclass
BarViewManager.h //Bar Subclass
...
ViewManager * viewManager;
#if Target_Foo
viewManager = [[FooViewManager alloc] init];
#elif Target_Bar
viewManager = [[BarViewManager alloc] init];
#else
viewManager = [[ViewManager alloc] init];
#endif
...
有什么办法可以让这段代码更干净,所以在调用者类中我不需要所有的编译器#if
语句,我只需要初始化超类,也许超类的init方法可以根据当前项目目标进行切换,并在我的viewManager
变量中返回正确的子类?
我确信在我缺少的 Objective-C 中可能有一个标准模式,但任何帮助将不胜感激!