Objective-C でプロパティ名とインスタンス変数名を変える方法
Objective-C でプロパティ名はほとんどの場合インスタンス名と同じです。しかし、何かしらの理由でインスタンス名を公開したくない場合、インスタンス名とプロパティ名を変えることができます。
例えば Book クラスに title というインスタンス変数があり、name というプロパティ名にしたい場合は以下のようにします。
@interface Book : NSObject { NSString* title; } @property NSString* name; @end
インスタンス変数に title、プロパティ名に name を指定します。
次に @implementation で synthesize を指定する際に、以下のように @synthesize name=title; と指定するのがポイントです。これで name のアクセッサ(setName: , name) が作られます。そのアクセッサ内では title が使われます。また、name にアクセスする際には self.name とかならずアクセッサ経由でアクセスするか、title を使用します。
@implementation Book @synthesize name=title; - (void) hoge { NSLog("%@", self.name); } - (void) dealloc { [super dealloc]; self.name=nil; } @end
dealloc 時の注意点は self.name = nil; としてメモリ解放することです。
入門 Objective-C 2.0 (Programmer’s SELECTION)
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
2clarity…
…