ページ

2009年7月3日金曜日

ホットキー変更対応(18) - 実装 Hotkeyクラス#2

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

昨日の続き。

Hotkeyの同値チェックは id ではなく、キーコードで行うべきだな。昨日の isEqual: は次のようになる。

- (BOOL)isEqual:(id)anObject
{
if (anObject == self) {
return YES;
}
if (!anObject || ![anObject isKindOfClass:[self class]]) {
return NO;
}
if (self.code == [anObject code] && self.modifier == [anObject modifier] ) {
return YES;
}
return NO;
}


キーコードと装飾キー(modifier)の組み合わせで判断する。

NSArray, NSSet の containsObject: を呼ぶと、コレクション内のオブジェクトに対して isEqual: を投げて同値チェックを行う。containsObject: は後ほど HotkeyRegister で使う。