プロジェクトターゲットのTEST=1
のPreprocessor Macros
セクションにBuild Settings
を追加しましたが、コードで使用するたびに、プリプロセッサはそれが定義されていないと見なします。
たとえば、次のようになります。
#if TEST
// a
#else
// b
#endif
この動作があります:
// b
でのみ機能します// b
に対してのみ機能しますこれは、プリプロセッサがTEST
を見つけることができないため(前述のように1
として定義されている場合でも)、false
として扱われるためです。
これらの問題を解決する方法はありますか?
編集:
私のユースケースは、複数のプロジェクトターゲットに関連しています。したがって、最初のターゲットの名前がFirst
であり、値1
で定義されたTEST
プリプロセッサマクロがあるとします。
プリプロセッサマクロが定義されていないSecond
という名前の別のプロジェクトターゲットを作成し、TEST
が0
(false
/not defined)の場合にのみコードを追加したい場合)、それを#else
ブロック(// b
)に配置します。
構文の色付けとオートコンプリートが// b
で機能することを知っていると、問題なく機能するように見えますが、現在のターゲットをFirst
に変更すると(pun意図)ビルドしても、Second
が選択されているので機能します。
Swiftでこのようにしたい場合は、User-Defined
にOTHER_Swift_FLAGS
という名前のBuild Settings
設定を次のように追加する必要があります。
次に、コードに次のように入力します。
#if TEST1
// Debug
#endif
#if TEST2
// Release
#endif
なぜこれが必要なのかわかりませんが、同じルートプロジェクトを持つ複数のアプリに特定の動作を使用するために、ネイティブXcodeターゲットを調べることは興味深いかもしれません。これが必要な場合は、次の記事を調べる必要があります: XCodeでターゲットを使用するAppCoda 。