これまで Objective-C で開発をしていたとき、デバッグ時のみ実行したいコードは以下のように記述していました。
#ifdef DEBUG
// ...
#endif
しかし Swift では同じ記述ができません。
Apple のドキュメントによると、代わりに以下のように記述できるとあります。
#if build_configuration
// ...
#elseif build_configuration
// ...
#else
// ...
#endif
試しに #if DEBUG ...
と書いてみましたが期待した動作をしません。
Apple のドキュメントをよく読むと以下のように書いてあります。
Swift code and Objective-C code are conditionally compiled in different ways. Swift code can be conditionally compiled based on the evaluation of build configurations. Build configurations include the literal true and false values, command line flags, and the platform-testing functions listed in the table below. You can specify command line flags using -D <#flag#>.
どうやらコンパイル時のオプションで -D flag
と指定するようですね。
Xcode の Build Settings を見てみると、Swift Compiler - Custom Flags に Other Swift Flags という項目があります。
ここに -D DEBUG
という定義を追加してみたところ、先ほどのコードは無事動作しました。
(まだ Xcode 6 は GM なのでスクリーンショットを貼り付けられないのが残念)
プロジェクトを新規作成すると Preprocessor Macros にはこれまで通り DEBUG=1
の定義がされているのですが、Other Swift Flags は空っぽです。
Xcode 6 リリース時には最初から -D DEBUG
が定義済みとなっていると良いですね。
[追記 2014.09.21] Xcode 6 が正式リリースされたので確認しましたが、残念ながら beta、GM のときと同様空っぽでした。残念。