UserDefinedでDebugとReleseによる環境変数使い分け

VisualStudioだと,よくdebugモードとreleaseモードの使い分けというのをやっていた.
なにしろライブラリによっては,debugとreleaseでインクルードするヘッダファイルが違う,なんて酔狂なものまであったりするので,その辺の設定には嫌でも慣れてくる.

だけど,意外と便利なもので,「debugのときはこっちの変数」「releaseの時はこっちの変数」みたいな使い分けはかなり簡単にできる.
コード中に#ifdef書けばさらに見えやすくなるけどね.


で,xcodeでも同じことをしたくなってしまった.


Objective-Cは,基本的にCの書き方を許容してくれるので,#ifdefと書いても問題ない.
ただ,これはCだとかObjective-Cだとか関係なく,その#ifdefで定義するヘッダファイルを使う場所で毎回呼んでおかなきゃいけない.
それはそれでめんどくさいなぁー,と思ったので,プロジェクトの設定側でやりたかったんです.


というわけでやってみた.

まず,UserDefinedに設定する


Edit Schemeの,

f:id:h3poteto:20140715012528p:plain

この辺でDebugとReleaseを切り替えられます.

f:id:h3poteto:20140715012524p:plain



そして,プロジェクトの設定を開きます.


Build SettingsにUserDefinedを追加します.

f:id:h3poteto:20140715012507p:plain

そうすると,ここの変数はDebugとReleaseで別々のものを設定できます.

f:id:h3poteto:20140715012502p:plain


で,ここで設定したENV_TESTってのをInfoのCustom iOS Target Propertiesに設定します.

f:id:h3poteto:20140715012455p:plain

あとは,コード内で,このenv_testを読み込みます.

 NSString  *_ENV_TEST = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"env_test"];


これでDebugとReleaseで設定する変数を分けることができます.


開発時と実機デバッグでは変えたいものも結構あるので,こういうの使うと非常に便利です.