私のプロジェクトにはマルチターゲットがあります。各ターゲットには、設定用の独自のClass
ファイルがあります。そのClass
名をターゲット設定(Info.plist
またはターゲットの建物設定)に保存したいと思います。この設定に基づいて、各ターゲットで使用する必要のあるクラスを定義できるようにします。
この質問 によると、各ターゲットの建物設定に「ターゲット固有のUser Defined
変数」を配置します。
しかし、それを私のコードに戻す方法がわかりませんか?
Info.plistファイルも前処理されているため、次の方法を使用できます。
ビルド設定でユーザー定義設定を定義します(例:CLASS_NAME)。そして、Info.plistファイルへの鍵。キーにCLASS_NAMEという名前を付け、値を${CLASS_NAME}
に設定します。
その後、次の方法でこの設定にアクセスできます。
NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
ビルド設定で定義された変数を直接使用することはできません。これらの変数は、ビルドツールで使用することを目的としています。
代わりに、「MYVAR = 5」のようなプリプロセッサマクロ変数でプリプロセッサマクロを定義します。次のようなコードでこれらのマクロにアクセスできます。
#if MYVAR==5
//Do something
#endif
これらの式の評価は、実行時ではなくビルド時に行われることに注意してください。
値を気にせずにマクロを定義するのは非常に一般的な使用法です。たとえば、デバッグビルド設定で「DEBUG = 1」を定義し、リリースビルド設定で「RELEASE = 1」を定義します。
その後、#ifdefまたは#ifndefを使用してテストできます
#ifdef DEBUG
// Log
#endif