2009-08-11 11 views
0

私はiPhoneの開発に着手して以来、クラス内のメンバーとしてデータにアクセスする最も良い方法はちょっと混乱しています。 obj-cアクセサの使用とドット構文の使用の違いは何ですか?

だが、私はMyClassのというクラスを持って、その中に私が持っているとしましょう:

myObject.myInt = 1; 

またはこの:

@interface MyClass : NSObject { 
    int myInt; 
} 

@property (nonatomic, assign) int myInt; 

を実装では、これを行うには良いですか?

[myObject setMyInt:1]; 

これは値も読み取るためのものです。 Objective-Cでは

int newInt = myObject.myInt; 

int newInt = [myObject myInt]; 
+1

ほぼ2日前にhttp://stackoverflow.com/questions/1249392/のほぼ正確な複製が尋ねられました。その質問に対する答えは、ここの回答よりも完全であり、役立ちます。質問する前にもっと完全な検索をするのが最善ですが、2つの質問は0つの質問よりも優れています。 :-) –

答えて

8

本当に問題ではありませんが、同じことです。ドットシンタックスは便利なもので、使用するのに便利です。コードをきれいにするような感じです。

ドット構文を使用してコンパイラから警告またはエラーをスローすると、そのプロパティがあることがわかっていてもidオブジェクトがある場合があります。

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5]; 
int aValue = 0; 
aValue = someReturnedObject.value; // warning 
aValue = [someReturnedObject value]; // will just do it 
0

ドット構文は、本質的にアクセサメソッドを使用するための省略形です。メッセージは引き続きアクセサメソッドを介して送信されます。あなたの質問にお答えしたいと思います。

2

オブジェクトのタイプは、静的にチェックされます。構文ではなく、[]構文では使用できません。つまり、あなたは使えません。オブジェクトの型が指定されておらず、コンパイル時にそれを使用するのが有益である場合、コンパイラはより多くの手助けをします。

関連する問題