宣言プロパティ(@property)でインスタンス変数を指定すると。@synthesizeで定型的なアクセサメソッドを生成できる。それと、アクセサメソッドをドット演算子を使って呼び出せる。
インスタンス変数を直接操作していい場合って?よくわからん。
メソッド内でのselfの使用は?
メソッド内で、そのインスタンス自身のアクセサを利用するためにselfに対してドット演算子を適用できる。でもアクセサメソッド内では使わないこと、使うと再帰呼び出しとなり停止しなくなる。
例えば、@propertyでretainを指定の場合
// hoge.h
NSString name_;
@property (nonatomic, retain) NSString name;
// hoge.m
@implementation Item
@synthesize name = name_;
@end;
って感じで、
@synthesizeを指定することにより以下のアクセサメソッド(セッタとゲッタ)は自分で書かなくてもよいこととなる。
- (NSString *)name {
return name_;
}
- (void)setName:(NSString *)name
{
if (name_ != name) {
[name_ release];
name_ = [name retain];
}
}
超参考になる
http://iphone.longearth.net/2009/01/22/【objective-c】nsdate-dateでセットした変数が参照できずエラー/
http://iphone-dev.g.hatena.ne.jp/tokorom/20090706/1246890179
// おまけ:retainカウントの取り方
[obj retainCount]
0 件のコメント:
コメントを投稿