でらうま倶楽部 : iPhone リリースビルド時に余計なコードをまとめて省く、Objective-Cなりの書き方。
http://blog.livedoor.jp/tek_nishi/archives/3449727.html
でらうま倶楽部 : Objective-C プロトコルを最短で理解するプログラム例 の記事を参考にさせて頂いたの、御礼がてら。
C言語の定番として、マクロを使うという手がありますね。以前、業務で良く使っていました。
1 2 3 4 5 | #ifdef _DEBUG #define NSLOG(_x) NSLog _x #else #define NSLOG(_x) #endif |
と定義しておいて、
1 2 3 4 5 6 7 8 9 10 11 12 | void Main() { // 通常の実行 Calc *calc = [Calc alloc]; int ans = [calc add:10 at:20]; NSLOG (([ NSString stringWithFormat: @"ans: %d" , ans ])); // nilの場合の実行 calc = nil ; ans = [calc add:10 at:20]; NSLOG (([ NSString stringWithFormat: @"ans: %d" , ans ])); } |
のようにログを書きます。「NLOG(( … ));」のように、括弧を2重に重ねるのが気持ち悪いですが、こうすると綺麗さっぱり消えます。まあ、ログなので括弧が2重になってもokかなと。
これの派生バージョンで、C++ では、__FILE__, __LINE__ を使って簡易的にログ出力できるようなマクロを組んだりします。
~ 追記
… が、最近の vc++ では、__VA_ARGS__ が使えるんですね。知らんかった。gcc は使えるのですが、昔の vc++ は使えなかったもので。
1 2 3 4 5 | #ifdef _DEBUG #define NSLOG(...) NSLog(__VA_ARGS__) #else #define NSLOG(...) #endif |
としておいて、
1 | NSLOG (@”debug message"); |
とかで十分。