iPhone デバッグ用のマクロ
iPhone アプリをデバッグするときに、ソースに NSLog をそのまま書いてしまうと、リリース時に削除するのが面倒なので、以下のようなマクロを使っています。
#ifdef DEBUG # define LOG(...) NSLog(__VA_ARGS__) # define LOG_METHOD NSLog(@"%s", __func__) #else # define LOG(...) ; # define LOG_METHOD ; #endif
使い方は、まずプロジェクトの設定を開き、「Debug」構成を選択してから、一番下のユーザ定義カテゴリの「GCC_PREPROCESSOR_DEFINITIONS」に「DEBUG」を追加しておきます。
こうすることで、Debug build のときにだけ「DEBUG」が定義されます。
あとは、NSLog の代わりに LOG を使うようにすれば ok です。
LOG(@"initialized %@", obj);
また、LOG_METHOD と書くと、Debug build のときだけメソッド名をデバッグログに表示します。
- (void)applicationDidFinishLaunching:(UIApplication*)application { LOG_METHOD; }
出力:
-[AppController applicationWillFinishLaunching:]
追記 (2008/11/21)
SDK 2.2 向けに更新しました。
追記 (2009/4/23)
NSStringFromSelector(_cmd) ではなく、__func__ を利用するように変更しました。