続Xcodeのデバッガを使ってます

 iPhoneの前はFlashでゲームを作ったりしてました。
 その時はデバッガ使わずに、変数を表示したりしてやってましたね。


 デバッガで変数の中身を覗けるんですが、覗ける時と覗けない時があったりします。
 ブレークポイントしかけても、汎用のメソッドに仕込むと、毎回止まって面倒。
 このあたり、多分評価式とか書いて解決するのがスマートなのでしょうが、
そこまで到達していない初心者の私は、条件式書いてNSLogでコンソールに出力させたりして調べたりしてます。


 デバッガ、ご存知の方もいらっしゃると思いますが、実はかなり複雑なシロモノのため、
デバッガが示す変数の値が絶対に正しいとは限らないそうです。
 それもあってNSLogで表示させるという事もあります。ケースバイケースで使い分け。


 デバッグ用のNSLog、リリースバージョンに残るのは面倒、と取り除くやり方はいろいろあるようですが、
私はこちらのやり方をしています。

NSLogの代わりをするマクロ
メソッド名なども表示するマクロ

 プロジェクトを作ると、Debugビルドには、DEBUG というシンボルが定義されています。
 これを利用するやり方。DEBUGがあったら、NSLogとして機能して、無ければ空白文にバケるマクロです。

// ------------------------------------------------------------------------------
// ■ LOG出力マクロ
// ------------------------------------------------------------------------------
#ifdef DEBUG
#  define LOG(...) NSLog(__VA_ARGS__)
#  define LOG_CURRENT_METHOD NSLog(@"%@/%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))
#else
#  define LOG(...) ;
#  define LOG_CURRENT_METHOD ;
#endif


 デバッガがどういうふうに実装されているかにご興味のある方は、こちらの書籍をお読み頂くと良いかと。