要約された説明
@property
.mの内部はクラスにプライベートであり、.hの内部はパブリックです。
角かっこ内で宣言するか、角かっこなしで宣言するかの違いは、変数の意味です。
角かっこ内で、クラスのインスタンスによってのみアクセス可能であることを意図したインスタンス変数(またはivar)を宣言します。プロパティ(.hで宣言されている)は、すべてのクラスがアクセスできることを意味します。
プロパティ
基本的@property
に、オーバーライドできるセットとgetを定義します。あなたがするとき:
AppDelegate myAppDelegate;
myAppDelegate.hat = @"A hat":
あなたは本質的にやっています:
[myAppDelegate setHat:@"A hat"]
そして、あなたがするとき
myAppDelegate.hat //so you can get the property's value
あなたは本質的にやっています
[myAppDelegate hat]
セットと取得のオーバーライド
あなたがそうするとき、@synthesize hat = _hat
あなたは本質的にインスタンス変数が_hat
関連付けられているgetとsetを作成しています。このインスタンス変数は、gets / setsでのみアクセスする必要があり、クラス内でも、sets / getsを使用する必要があります(を使用してself.property
)
セットを@synthesize
オーバーライドして、次のメソッドをオーバーライドすることで作成できます。
- (void) setHat:(NSString*) aHat
- (NSString *) hat