質問

私が理解しているように、@ synthesizeは実際にゲッターとセッターを生成しています。しかし、@ propertyは何をしていますか?クールな@synthesizeマジック関数のパラメーターを設定するだけですか?

役に立ちましたか?

解決

ヘッダーファイルに@propertyを記述します

@property float value;

は次と同等です:

- (float)value; 
- (void)setValue:(float)newValue; 

他のクラスの情報を取得します。クラスにはこのメソッドがあります

@synthesize phisicalyクラス実装でこれらのメソッドを作成

他のヒント

@property は、名前をプロパティとして宣言します。つまり、ドット構文( object.value )でアクセスできます。

@synthetize は、ゲッターメソッドとセッターメソッドを作成するマクロと見なすことができます。 @synthetize が入力されている場合でも、これらのメソッドをオーバーライドできることを知っておくと便利です。

@property はゲッターおよび/またはセッターを宣言します

@synthesize はそれらを実装します。

@propertyディレクティブで作成されたセッターおよびゲッターを実装するには、@ synthesizeディレクティブが必要であるという一般的な誤解がありますが、そうではありません。 @synthesizeなしで@propertyディレクティブを使用しても、セッター/ゲッターが生成され、ドット表記を使用できます。ただし、@ synthesizeディレクティブを省略すると、コンパイラーは、アンダースコア文字を先頭に持つ対応するインスタンス変数を生成します。プロパティmyVarのインスタンス変数は_myVarです。

先頭にアンダースコアを使用することは、プロパティとインスタンス変数を区別できるようにする一般的な規則です。プロパティとインスタンス変数が同じ名前を共有することも一般的です。これはデフォルトで@synthesizeが行うことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top