ページ

2009年7月13日月曜日

ホットキー変更対応(25) - リファクタリング / プロパティを減らす

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

ホットキーが押された時に Hotkey.target の Hotkey.action が呼び出される。同様に ホットキーが変更された場合、HotkeyTextView.target の HotkeyTextView.action が呼び出される。

汎用的に各 action を設定できるようにしたが、これらのメソッドは別に決め打ちでかまわないので、各プロパティを無くして、決まったメソッドを呼び出す様に修正した。

Hotkeyは、hotkeyDown:(Hotkey*) を呼び出す。
HotkeyTextViewは、changedHotkey:(Hotkey*) を呼び出す。

hotkeyDown: を呼び出す箇所のコードはこんな感じ。
HotkeyRegister.m

if (hotkey.target && [hotkey.target respondsToSelector:@selector(hotkeyDown:)]) {
[hotkey.target performSelector:@selector(hotkeyDown:) withObject:hotkey];
} else {
NSLog(@"WARNING: Hotkey.target is null, or Hotkey.target instance does not implement hotkeyDown:(Htokey*), you should write the method on Hotkey.target");
NSLog(@"Hotkey: %@", hotkey);
NSLog(@"Hotkey.target: %@", hotkey.target);
}


hotkey.target と hotkeyDown: の存在チェックを行った後、hotkey.targetへメッセージを投げる。もしどちらにも該当しない場合は WARNINGをログへ書き出す。メソッド実装が必要であることはリファレンスマニュアルを書けばいいのだが、個人開発ではこんな安易な方法でもいいだろう。