#DEFINE
シリーズを使用して、自分のアプリのスタイルオプションを作成できるかどうかは疑問です。#defineを使用してスタイルを作成する
例えば、
#DEFINE style1: backGroundColor = [UIColor: colorNamed whiteColor];
txtColor = [UIColor blackColor]; #DEFINE style2....
私の質問は:この文の構文は何ですか?
#DEFINE
シリーズを使用して、自分のアプリのスタイルオプションを作成できるかどうかは疑問です。#defineを使用してスタイルを作成する
例えば、
#DEFINE style1: backGroundColor = [UIColor: colorNamed whiteColor];
txtColor = [UIColor blackColor]; #DEFINE style2....
私の質問は:この文の構文は何ですか?
それはアプリのスタイルオプションを作成するためにDEFINE
ステートメントを使用することは確かに可能ですがプリプロセッサディレクティブの使用のような機能のために理にかなっている場合、私は思ったんだけどスタイルは、プロパティのコレクションになります。 DEFINE
ステートメントを使用してスタイルを定義すると、最終的にスタイル選択を実行時オプションとしてユーザーに提供することが難しくなります。
代わりに、私はこのためにクラス階層を作成し、それをシングルトンとして実装する方が良いと思う傾向があります。クラス階層を使用すると、ルートクラスの一般的なスタイルビヘイビアを定義し、それから継承して特定のスタイルを実装できます。後で、必要に応じてユーザーにスタイルを選択する機能を公開することができます。
#define backgroundColor [UIColor whiteColor]
UIColor *txtColor = backgroundColor;
とします。
[UIColor whiteColor]
ではなく、whiteColor
を定義として使用できますが、上記の例の代わりに[UIColor backgroundColor];
を呼び出します。
私はスタイリングを生成するためにこれをしません。コード以外のさまざまな設定を定義することは良いアイデアですが、defineを使用することはかなり拘束力があり、UIからコードを分離する目的を破ります。
#define
には、セミコロンをどこにも置かないでください。プリプロセッサが定義を挿入すると、そのままセミコロンが挿入されます。 プリプロセッサにセミコロンを挿入しないようにします。定義を書くときには、書いている場所のすべてを知っているとは思えないので、インラインで式を書くことができるので、セミコロンを入れてはいけません。
もう1つの方法は、代わりにconst
を使用することです。
私が書いたコードでは、文字列リテラル@"literal string"
と数字のために#define
があります。
//static type *const variableName = assignment;
static NSString *const kConstantString = @"Constant variable";
定数は、情報を入力するプリプロセッサを使用していない。他の場所では、私はこのようになりますconst
宣言を使用しています。定義に頻繁にアクセスして計算を使用すると、一度だけ格納される定数宣言に適しているかもしれません。
#define
の代わりにconst
を使用した他の大きな理由は、プリプロセッサによって処理されるので、defineはタイプチェックされないということです。 Defineは基本的にコンパイラの警告を無効にし、エラーのみを表示します。厳格な警告は非常に有用であり、多くの不満を救うことができます。
はたぶん、あなたはこの構文を探しています:
はどこでもあなたのコード(クラスレベルまたはメソッドレベル、ヘッダーまたは実装ファイル)で、スタイル
#define STYLE1
//#define STYLE2
を設定します。
#ifdef STYLE1
//code for the first style
UIColor* backgroundColor = [UIColor redColor];
#elif STYLE2
//code for the second style
UIColor* backgroundColor = [UIColor greenColor];
#else
//code for the third style
UIColor* backgroundColor = [UIColor clearColor];
#endif
Cプリプロセッサについての詳細:http://en.wikipedia.org/wiki/C_preprocessor
Sulthanに感謝します。 "Style1"のコードはどのように見えますか?中括弧に入れたものだけですか? –
完全に何でもかまいません。コンパイル時には、1つのブロックのみがコンパイルされ、他のブロックはコンパイルされません。私は例を挙げます。 – Sulthan
ありがとうRob。それは強く聞こえる。私は似ているコードサンプルを探します。 –
私は最高のものがシングルトンを使用し、色やすべてをxml(plist)ファイルに定義することができます。実行時にスタイルを変更したい場合は、プリプロセッサを使用することはできません。異なるスタイルの異なるアプリケーション・バージョンが必要な場合は、プリプロセッサをお勧めします。 – Sulthan
私は、実行時に設定を変更できるようにするため、これが私にとって最高の解決策だと思っています。私はXMLファイルを作成したので、解析するだけで済みます。みなさんに感謝します。皆さんに私の質問を解決させていただきたいと思います。私はあなたにすべてをマークしました。デビッド –