我有我的Xcode項目可以編譯兩個目標,爲了簡單起見,我們將其稱爲'Foo'和'Bar'。我有一個超類和兩個子類,我怎樣才能乾淨地確保一個變量作爲基於項目目標的不同子類返回?基於Xcode項目目標的Objective-C返回子類?
因此,例如,說我有以下...
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
聲明,我只需要初始化超類,也許超類初始化方法可以根據當前項目目標來切換,並返回我的viewManager
變量中正確的子類?
我敢肯定,Objective-C中可能存在一個標準模式,我錯過了,但任何幫助將不勝感激!
是的,這是一種可能性,但是這不允許我有一個默認實現的'SuperClass',並且只覆蓋該類中的特定方法。即使在其中一個「目標」類中只需要很小的改變,也需要重複整個班級代碼。 – Sammio2
您可以在兩個目標上生成超類,並在單個目標上生成子類 –