iOS Preprocessor Macros

こんにちは。

 

時々ですが、NSLogをそのまま使用しているコードを見かけたりします。。。

そんな時、少々ムムっと思ったりします。

 

開発中は、NSLogにて何かしら値を出力し

処理を追って見るということはあります。

 

しかしリリースにまでNSLogを残してしまっていると、

少なからずパフォーマンスにも影響がありますし

世の中に出力しなくてよい情報を露出してしまっている可能性もありますよね。

 

そんな時に役に立つのが、プリプロセッサマクロです。

 

プリプロセッサマクロとは

 簡単にいうと、コンパイル時に条件を判断しビルドしてくるものです・・・。

 

では、iosの開発でどのようにプリプロセッサマクロを設定するか

デバック時のみログを出力する方法で紹介したいと思います。

 

まずはじめに、プリプロセッサマクロの設定を行います。

 

プロジェクト>Build Settingsを選択

検索窓にて preproと入力すると

Apple LLVM compiler 4.1 - Preprocessingの箇所に

Preprocessor Macrosがあり

そこに

 DebugとRelaseという定義があります

 

 Xcode4.xでは、すでにDebugのところには、DEBUG=1と設定されているのですね。

(昔は、そこまでしてくれていなかったですが・・・)

 

f:id:mmmkenmmm:20121125235758p:plain

 

なので、Xcode4.xを利用の場合は、Build Settingsの設定は、このままで行くとしまして・・・

 

では、次にマクロをどこに記載するかですが、これは、"プロジェクト名"-Prefix.pchというファイルが

(Xcode4.xであれば)Supporting Filesに存在するので、ここにマクロを追加すればOKです。

 pchに以下のようにマクロを定義します。

 

#ifdef DEBUG

#define DEBUG_NSLog(...) NSLog(@"LOG:[%@] %@",[NSString stringWithFormat:__VA_ARGS__], [NSString stringWithFormat:@"%s LINE:%d",__func__,__LINE__]);

#else

#define DEBUG_NSLog(...)

#endif

 

上記のようにPreprocessor MacrosでDEBUGが定義されていれば、

デバッグ時のみLOGの出力が行われます。

言わずもがなリリース時には、ログは何も出力されなくなります。

 

Enjoy iOS Dev Life!!