前回のコードでは 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 メソッドを自動生成するので、その宣言をなくすだけで良い。