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と設定されているのですね。
(昔は、そこまでしてくれていなかったですが・・・)
なので、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!!