Swift条件コンパイル

2518 ワード

C系言語では、#ifまたは#ifdefのようなコンパイル条件ブランチを使用して、コンパイルが必要なコードと不要なコードを制御できます.Swiftにはマクロ定義の概念がないので、#ifdefの方法を使用して、あるシンボルがマクロ定義されているかどうかを確認することはできません.しかし、コンパイルプロセスとコンテンツを制御するために、Swiftは、必要に応じてコンパイルコンテンツをカスタマイズするいくつかの簡単なメカニズムを提供しています.
まず#ifというコンパイルタグが存在するのか、使用する文法も元と変わらない
#if <condition>

#elseif <condition>

#else

#endif

もちろん、#elseifと#elseはオプションです.しかし、これらの式のconditionは任意ではありません.Swiftにはいくつかのプラットフォームとアーキテクチャの組み合わせが構築されており、異なるプラットフォームのために異なるコードをコンパイルするのに役立ちます.具体的には:
メソッド-オプションのメソッド
os() ———OSX, iOS
arch() x86_64, arm, arm64, i386
これらの方法とパラメータは、大文字と小文字に敏感であることに注意してください.例えばiOSプラットフォームとMacプラットフォームの色に関するAPIを統一すれば、typealiasと協力して条件コンパイルを行うことが可能です.
#if os(OSX)
    typealias Color = NSColor
#else
    typealias Color = UIColor
#endif

またarch()のパラメータについて説明する必要があるのはarmとarm 64の2つがそれぞれ32ビットCPUと64ビットCPUに対応する実機の場合であり、シミュレータについては32ビットデバイスのシミュレータと64ビットデバイスのシミュレータがそれぞれi 386とx 86_に対応する64、それらも別々に扱う必要があります.
もう1つの方法は、同じtargetを使用して同じappの有料版と無料版の2つのバージョンを完了し、ボタンをクリックしたときに有料版で機能を実行する必要があるなど、カスタム記号を条件付きでコンパイルすることです.無料版のポップアップ・プロンプトでは、次のような方法を使用できます.
@IBAction func someButtonPressed(sender: AnyObject!) {
//      
    #if FREE_VERSION //         
        // do something       ,      
    #else
        // do something     
    #endif
}

ここでFREEを使いますVERSIONというコンパイル記号は無料バージョンを表す.有効にするには、プロジェクトのコンパイルオプションで設定する必要があります.プロジェクトのBuild Settingsでは、Swift Compiler-Custom Flagsを見つけ、その中のOther Swift Flagsに-D FREEを追加します.VERSIONでいいです.
それでもいい
#if true
    print("true")
#endif

参照:http://swifter.tips/condition-compile/