NSLogは実機ではApple System LogにWarningレベルのログを出力してしまうみたい。XcodeのOrganizerで見ると、Consoleにこんな感じでログが出てしまいました。
Mon Feb 7 11:46:55 iPhoney SimpleWeight[3044]: <0x14c500 GraphViewController.m:(315)> Single Tap Detected: (243.00, 172.00)
これでは不要なログが大量に出てしまい、パフォーマンスにも影響してしまうので好ましくありません。(ちなみにConsoleを見ると、結構大手の出しているアプリでもデバッグログを出したままリリースしていたりします。-_-;)
リリースの前に手でNSLogをコメントアウトするのは大変なので、うまくリリース時にだけNSLogを削除する方法がないかと調べたら、こちらにありました。
まずはXCodeのプロジェクトの設定のBuildタブで、DebugのPreprocessor Macrosに次の変数を定義しておきます。
DEBUG_MODE=1
次に、共通のヘッダファイルをつくって、そこに次のようなマクロを定義しておき、デバッグ用の出力はNSLogの代わりにここで定義したDLogを使うようにします。
#ifdef DEBUG_MODE #define DLog(s, ...) NSLog(@"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) #else #define DLog(s, ...) #endif





