はじめに
NSLogを使用し出力させたログを開発環境でのみ出力させる方法を備忘録として書き記します。
手順1
まずは、適当なSampleプロジェクトを作成し、「Supporting Files」の中にprefix.pchを作成します。(どこでもよいですがXcode6以前は「Supporting Files」にプロジェクト作成時からあったようなのでこの中に)
名前はプロジェクト名Prefix.pchにします。
ここではSamplePrefix.pch
手順2
Build Settingsから
Apple LLVM 7.1 - Language(本環境は7.1)の
Prefix Headerにパスを追加します。
手順1と同じ場所に追加したならパスは
「プロジェクト名/ファイル名.pch」となります。
手順3
手順1で作成した「SamplePrefix.pch」に下記のコードを追加
#ifdef DEBUG
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...)
#endif
※prefix.pchに書いた内容はimportしなくてもすべてのファイルに適用されます
試してみる
下記のようにViewController.m内のviewDidLoad内でNSLogを使用してみます。
通常当たり前ですが下記のようにログが出力されます。
Schemeの設定を下記の手順で変更
・Sample(プロジェクト名)を押下
・Build ConfigurationをDebugからReleaseに変更
再度Buildすると、下記のようにNSLogをコメントアウトしていないのに、ログが出力されない
さいごに
プロジェクト作成時に今回の手順をふめば、Release時うっかりNSLogを消し忘れていたということにも対応できると思いました。
また、本番環境と開発環境でAPIKeyやURLなどが違う場合も今回のmacroを使うことで使い分けることができます。