32

私のプロジェクトにはマルチターゲットがあります。各ターゲットには、設定用の独自のClassファイルがあります。Classその名前をターゲット設定(Info.plistまたはターゲットの建物設定)に保存したい。この設定に基づいて、各ターゲットで使用する必要のあるクラスを定義できるようにします。

この質問によると、私User Definedは各ターゲットの建物設定に「ターゲット固有の変数」を入れました。

しかし、それを私のコードに戻す方法がわかりませんか?

4

2 に答える 2

69

Info.plist ファイルも前処理されるため、次のアプローチを使用できます。

ビルド設定でユーザー定義の設定を定義します (例: CLASS_NAME)。そして、Info.plist ファイルへのキー。キーに CLASS_NAME という名前を付け、値を に設定します${CLASS_NAME}

その後、次の方法でこの設定にアクセスできます。

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
于 2010-07-23T09:49:33.427 に答える
10

ビルド設定で定義された変数を直接使用することはできません。これらの変数は、ビルドツールで使用することを目的としています。

代わりに、「MYVAR=5」のようなプリプロセッサマクロ変数でプリプロセッサマクロを定義します。次のようなコードでこれらのマクロにアクセスできます。

#if MYVAR==5
    //Do something
#endif

これらの式の評価は、実行時ではなくビルド時に行われることに注意してください。

値を気にせずにマクロを定義するのは非常に一般的な使用法です。たとえば、デバッグビルド設定で「DEBUG = 1」を定義し、リリースビルド設定で「RELEASE=1」を定義します。

その後、#ifdefまたは#ifndefを使用してテストできます

#ifdef DEBUG
    // Log
#endif
于 2010-07-23T08:35:55.600 に答える