web-dev-qa-db-ja.com

iphone:コードでターゲットの設定でユーザー定義変数を取得しますか?

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

この質問 によると、各ターゲットの建物設定に「ターゲット固有のUser Defined変数」を配置します。

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

30
KONG

Info.plistファイルも前処理されているため、次の方法を使用できます。

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

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

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
66
tonklon

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

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

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

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

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

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

#ifdef DEBUG
    // Log
#endif
9
tonklon