6

これを検索すると、他の言語の情報しか見つかりませんでした。次のような条件付きステートメントを作成するためのベストプラクティスを知りたいです。

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

次に、グローバルファイルでDEV_MODEをオンまたはオフに設定して、複数の場所でコードを変更するのではなく、オンまたはオフに変更するだけで済みます。私はいくつかのアイデアを持っていますが、これを行うための最良の方法についてのアドバイスを探しています。

4

4 に答える 4

15

これを試して:

#ifdef DEBUG
  // do stuff
#endif

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

ここに画像の説明を入力してください

于 2012-09-17T17:38:31.823 に答える
8

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

とはいえ、CスタイルのIFでコードを汚染する代わりに、プリプロセッサディレクティブを使用してデバッグモードとリリースモードを除外できます。私の知る限りDEBUG、テストモードの場合はマクロを1に定義し、リリースモードの場合はマクロを定義しないのが一般的な方法です。(また、Xcodeがこれを定義する場合があります。この動作が信頼されているのを見てきました。)その理由は、プリプロセッサの使用がインデントに入らないため、より読みやすくなるためです。視覚的にコーディングします。要約すると、試してみてください

#ifdef DEBUG
    // do debug stuff here
#else
    // do release stuff here
#endif

プリプロセッサマクロの追加の引数の1つは、Cコード内では不可能だったグローバル名前空間を条件付けできることです。つまり、プリプロセッサマクロを使用すると、次のように記述できます。

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

プリプロセッサなしではこれを行うことはできません。

于 2012-09-17T17:38:59.653 に答える
1

プリプロセッサ変数は必要なものです。ビルド構成で変数を定義し(DEV_MODEたとえば)、次のようなプリプロセッサチェックを使用します。

#if DEV_MODE
    //dev mode code
#else
    //non-dev mode code
#endif
于 2012-09-17T17:37:50.417 に答える
0

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

于 2012-09-17T17:37:34.490 に答える