2011年 2月 07日(月曜日) 11:22

リリース時にデバッグ用のNSLog出力を簡単にOFFにするには

評価:
(0 票)

デバッグのために記述したNSLog(又はprintfなど)をリリース時に削除する方法です。

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

debug_flag_setting次に、共通のヘッダファイルをつくって、そこに次のようなマクロを定義しておき、デバッグ用の出力は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
最終更新日: 2011年 6月 27日(月曜日) 01:10
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/