2011-09-17 25 views

答えて

35

ターゲットを使用します。それがまさに彼らのためのものです。

Learn more about the concept of targets here

通常、プロジェクトの大半には1つのターゲットがあり、これは1つの製品/アプリケーションに対応しています。あなたが複数のターゲットを定義する場合、次のことができます。

  • はあなたにビルド設定で遊ぶことができ、他の
  • で両方のターゲットであなたのソースコードファイル(または多分全て)の一部、いくつかのいずれかのターゲットでは、いくつかを含めます異なる設定を使用して2つのターゲットをコンパイルします。

たとえば、あなたはその後(の「LiteVersion」ターゲットでLITEマクロを定義するには、ターゲットに「PremiumVersion」とOTHER_C_FLAGS = -DLITEOTHER_C_FLAGS = -DPREMIUMを言わせて)他とのための1つの目標と他のマクロのプリコンパイラマクロを定義することができあなたのソースに同様のコードを含めてください:

-(IBAction)commonCodeToBothTargetsHere 
{ 
    ... 
} 

-(void)doStuffOnlyAvailableForPremiumVersion 
{ 
#if PREMIUM 
    // This code will only be compiled if the PREMIUM macro is defined 
    // namely only when you compile the "PremiumVersion" target 
    .... // do real stuff 
#else 
    // This code will only be compiled if the PREMIUM macro is NOT defined 
    // namely when you compile the "LiteVersion" target 

    [[[[UIAlertView alloc] initWithTitle:@"Only for premium" 
     message:@"Sorry, this feature is reserved for premium users. Go buy the premium version on the AppStore!" 
     delegate:self 
     cancelButtonTitle:@"Doh!" 
     otherButtonTitles:@"Go buy it!",nil] 
    autorelease] show]; 
#endif 
} 

-(void)otherCommonCodeToBothTargetsHere 
{ 
    ... 
} 
+1

慣れている人は、ターゲットを別のメイクファイルと考えてください。彼らは同じ役割を持っています。 – Cyrille

+2

これは巨大です、ありがとうございます。これを実際に私のために正しく動作させるには、コピーターゲットを実行してから、ターゲット設定をアップデートして、バンドル名に異なるInfo.plistを使用する必要がありました... – Slee

+4

さらにプロジェクトにファイルを追加する場合は、アクティブなファイルだけでなく、両方のターゲットにファイルを追加する:ファイルを追加するときに、ファイルをコピーするかどうかを尋ねるダイアログボックスに、ターゲットとチェックボックスのリストが表示されます。 (チェックボックスの状態は保存されているので、おそらくこれを一度だけチェックする必要があります) – AliSoftware

関連する問題