は、私はクラスのインタフェースを定義するヘッダファイルがあります。Xcodeでターゲットごとに複数の実装を実装しても問題ありませんか?
// MyClass.h - included in all targets
//
@interface MyClass
+ (void) doThing;
@end
をそして、私は2つの異なる実装ファイルがある - ターゲットごとに1つ。
// MyClass+targetA.m - Only included in targetA
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetA"); }
@end
// MyClass+targetB.m - Only included in targetB
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetB"); }
@end
- このアプローチに関する問題はありますか?
- 各ターゲットの動作をカスタマイズするための、より簡単な方法はありますか?
メソッドMyClassは、アプリケーションの外観をテーマにしています。 MyClassといくつかのターゲットにいくつかのメソッドがあります
これらの2つの実装は、異なるソースファイルにあると正当化されるほど大きく異なりますか?そうでなければ、ターゲット固有のプリプロセッサ定義に基づく#ifdefが良い選択かもしれません。しかし、2つのファイルを保存することに決めたら、名前を変更することをお勧めします。私はXcodeが2つのファイルが同じ名前を持っていると混乱しているのを見ました。 – mah
@mah - 興味深い!お返事をありがとうございます。私はプリプロセッサの定義を使用していましたが、これも過去に使用していたためです。実装はさまざまなクライアントのためのアプリをテーマにしているため、実装間には多少の違いがあります。名前の変更についての大きなヒント - 私はそれが可能ではありませんでした。 – Robert
クラス名とソースファイル名の間には何の関係もありませんので、間違いなく可能ですが、MyClass_client1.m、MyClass_client2.mなどのようにそれらの名前を付けるのが最善です。 – mah