Sample.h
@property(nonatomic) int hogehoge;
と@propertyの宣言をした場合、
Sample.mからこのプロパティにアクセスする方法は、
self.hogehoge = (値);
_hogehoge = (値);
という2通りの方法があります。
どちらの方法でも使い方はほぼ一緒ですが、少しだけ違いがあります。
それは、値を変更したときにオーバーライドしたセッターが呼ばれるかどうかです。
すなわち、
self.hogehoge = (値);
のようにして値の変更を行った場合は、以下のメソッドが呼ばれます。
Sample.m
-(void)setHogehoge:(int)hogehoge{
_hogehoge = hogehoge;
}
それに対して、
_hogehoge = (値);
の場合は、上記のメソッドは呼ばれません。
従いまして、プロパティの値の変更に伴い何らかの処理を行いたいときには、
self.hogehoge = (値);
を用いるのはアリかと思います。
例えば、
Sample.m
-(void)setHogehoge:(int)hogehoge{
if(hogehoge > 5){
hogehoge = 5;
}
_hogehoge = hogehoge;
}
とすることで、hogehogeの値が5より大きくならないようにすることが可能です。
また、
Sample.m
-(void)setHogehoge:(int)hogehoge{
NSUserDefaults *uD = [NSUserDefaults standardUserDefaults];
[uD setInteger:hogehoge forKey:@"HogeKey"];
_hogehoge = hogehoge;
}
と書くことで、値の変更時に保存処理を行うことができます。