2011-06-20 5 views
7

可能性の重複:
Constants in Objective C適切に定義する方法の定数

私はコントローラを設計していると私はつもりだが(ちょうどそのコントローラのため、局部的に)その中にいくつかの定数を必要とします。 Appleによって提供されたサンプルコードを見ると、次のような行を見ることができます:

#import "Constants.h" 

#define kTextFieldWidth 260.0 

static NSString *kSectionTitleKey = @"sectionTitleKey"; 
static NSString *kSourceKey = @"sourceKey"; 
static NSString *kViewKey = @"viewKey"; 

const NSInteger kViewTag = 1; 

誰も私の説明に違いはありますか?どのスタイルを使うべきですか?それらはあなたがそれらに割り当てるオブジェクト/値のタイプに依存していますか?意味の使用:文字列の場合はstatic NSString *、浮動小数点の場合は#define、整数の場合はNSInteger?あなたはどのように選択をしますか?

+0

ベストアンサー[ここ](http://stackoverflow.com/questions/538996/constants-in-objective-c) –

答えて

0

スコットとベンサードは、定数値を定義するためにthat is the best wayを指摘しました。しかし、定義を行う限り、定義を使用してデバッグするのは難しく、通常はデバッガで拡張された値を簡単に見ることができません。変数をグローバルに公開する場合は、クラスのヘッダーファイルにextern宣言を追加するだけで済みます。次に覚えておくべきことは、ポインタ(*)の後ろにconst宣言を置くことです。そうしないと、ほとんどの用途でポインタから廃棄修飾子の警告が出ます。

+0

ありがとう、周りを遊んで、いくつかのexplinationsを読んだ後、私は理解することができた:) – Hidden

5

#defineキーワードは、define'dの値をコードに直接挿入させるコンパイル時の指令です。これはプログラム全体およびリンクされたすべてのライブラリ全体でグローバルです。だから、コントローラののコントローラの定数を作成したいという希望に基づいて、リストから取り除くことができます。

静的とconstの間の主な違いは、静的変数が初期化後に変更することができるということである、CONSTものはできません。初期化後に変数を変更できるようにするには、という静的キーワードを使用する必要があります。

希望に役立ちます。

+0

ストレートポイントと簡潔に。ありがとう、私は完全にそれを持っている!:) – Hidden

関連する問題