宣言プロパティ(@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 件のコメント:
コメントを投稿