ページ

2009年7月10日金曜日

Objective-C 2.0 プロパティのsetter/getterを自前で実装

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回のコードでは setter/getterを自前で実装したいが為にプロパティ宣言は行わなかったが、調べてみるとできることがわかった。

http://journal.mycom.co.jp/column/objc/102/index.html



ダイナミックObjective-C - 102 プロパティ(2) - プロパティの宣言


前回のコード:
HotkeyTextView.h
@interface HotkeyTextView : NSTextView {

BOOL _is_editing;
Hotkey* _hotkey;
}

@property (retain) Hotkey* hotkey;

- (Hotkey*)hotkey;
- (void)setHotkey:(Hotkey*)hotkey;


HotkeyTextView.m
@implementation HotkeyTextView

@synthesize hotkey = _hotkey



AppController.m
- (void)awakeFromNib
{
:
[_text1 setHotkey:hotkey];
:



これをこうする。

HotkeyTextView.h
@property (retain) Hotkey* hotkey;   // プロパティ宣言追加

//- (Hotkey*)hotkey; // コメントアウト
//- (void)setHotkey:(Hotkey*)hotkey; // コメントアウト



HotkeyTextView.m
@implementation HotkeyTextView

// @synthesize hotkey = _hotkey <-- コメントアウト



AppController.m
// [_text1 setHotkey:hotkey];
_text1.hotkey = hotkey; // プロパティでアクセス



つまり @synthesize が setter/getter メソッドを自動生成するので、その宣言をなくすだけで良い。