2012-09-17 17 views
6

これを検索するには、他の言語の情報しか見つけられませんでした。Xcode - 条件付き開発モードまたは生産モード

if (DEV_MODE){ 
    //do something 
}else{ 
    //do the real stuff 
} 

そして私が唯一のオンまたはオフの代わりに、複数のコードを変更するのにそれを変更する必要がありますので、いくつかのグローバルファイルにオンまたはオフDEV_MODEの設定:私は、次のような条件付きのたstatmentsを書くためのベストプラクティスを知りたいのですが場所。私はいくつかのアイデアを持っていますが、これを行う最善の方法についてアドバイスを探しています。

+0

コンパイル時に 'DEV_MODE'を決定しますか?または、再コンパイルせずに実行時に 'DEV_MODE'を変更できるようにしたいですか? –

答えて

14

Xcodeのバージョンは自動的にこのマクロを新しいプロジェクトに設定します。プロジェクトのビルド設定に移動して、設定を確認します。それがないなら、あなたはそれを自分で追加する必要があります。

enter image description here

+0

はい、私の設定はそれを反映しています。だから私は何も正しく変更する必要はありませんか?私は、AppStoreスキームを使用すると、DEBUGは自動的に0になると仮定します。 – soleil

0

プロジェクト設定には、「プリプロセッサマクロ」というセクションがあります。そのセクションでは、 "DEV_MODE"などのDebugビルドの文字列を追加することができます。上記の条件を満たすことができます。あなたのアプリが「リリース」やマクロを含まないその他の設定用にビルドされると、チェックは失敗します。

1
ビルド構成が変数(例えば DEV_MODE)を定義し、次にのようなプリプロセッサのチェックを使用して

プリプロセッサ変数は、あなたが欲しいものです:

#ifdef DEBUG 
    // do stuff 
#endif 

現在:これを試してみてください

#if DEV_MODE 
    //dev mode code 
#else 
    //non-dev mode code 
#endif 
+0

'DEBUG'を使うほうが、デフォルトではXcodeによって定義されているか、定義されていません(もちろん、別のIDE /コマンドラインツールチェーンを使っているわけではありません)。 –

8

(この質問はのXcodeとは関係ありません。)

言った、代わりにCスタイルのIFを使用してコードを汚染します、プリプロセッサディレクティブを使用して、デバッグモードとリリースモードを除外することができます。私が知る限り、テストモードの場合はDEBUGマクロを1に定義し、リリースモードの場合はマクロを定義しないようにするのが一般的です。 (Xcodeはこれを定義しているかもしれませんが、私はこの動作が頼りになっているのを見てきました。)なぜなら、プリプロセッサの使い方はインデントにならないので読みやすく、コードを視覚的に表示する。要約すると、プリプロセッサマクロの一つ

#ifdef DEBUG 
    // do debug stuff here 
#else 
    // do release stuff here 
#endif 
を試してみてください余分な引数を使用すると、Cのコード内でできなかったグローバル名前空間を、条件付きことができるということです。 I. eは、プリプロセッサマクロと、あなたはプリプロセッサなしでこれを行うことができませんでした

#ifdef DEBUG 
    int functionOne() 
    { 
    } 
#else 
    char *functionTwo(int a) 
    { 
    } 
#endif 

を書くことができます。

+0

説明をありがとう。 – soleil

関連する問題