Simple gadget life programming diary

Simple gadget life の中の人によるプログラミングメモ

デバッグ時のみ有効となるようにNSLogをマクロ化して使う

デバッグ時にNSLogを使って動作確認するが、本番モジュールでは無効化したい。
そのため、マクロを用いて別関数名で定義する。

//ヘッダーimport文の下あたりに定義
#if DEBUG
#define MyLog(fmt,...) NSLog((fmt),(__VA_ARGS__))
#else
#define MyLog(fmt,...)
#endif

上記の場合、

int a = 10;
MyLog(@"a=%d",a);

のように何かしら引数が1つは必要となる。
この場合

MyLog(@"test");

といった単純に引数を伴わない出力ができない。そのような場合は以下とする。

//ヘッダーimport文の下あたりに定義
#if DEBUG
#define MyLog(...) NSLog(__VA_ARGS__)
#else
#define MyLog(...)
#endif

これで出力されるようになる。

追記
*-Prefix.pchという場所に書くとどのソースからでも参照できるので便利だそうな。
NSLog デバッグ用の各種ログマクロまとめ