ホットキーの値を NSUserDefaults へ保存する。今回はその準備で Hotkey へいくつかメソッドを追加しよう。
Hotkey.h
@interface Hotkey : NSObject {
:
NSString* _savekey;
}
:
@property (retain) NSString* savekey;
:
- (NSNumber*)numberValue;
- (id)initWithSavekey:(NSString*)savekey number:(NSNumber*)number;
メンバ変数に _savekey を加え、プロパティを宣言する。ここには NSUserDefaults で保存する時の key(文字列)を格納しておく。numberValue は保存時に modifier と code を NSNumber型に変換して返すメソッド。
実装はこんな感じ。
Hotkey.m
- (NSNumber*)numberValue
{
return [NSNumber numberWithUnsignedInt:(self.modifier<<16|self.code)];
}
- (id)initWithSavekey:(NSString*)savekey number:(NSNumber*)number
{
self = [super init];
if (self) {
UInt32 value = [number unsignedIntValue];
self.savekey = savekey;
self.modifier = value >> 16;
self.code = value & 0xffff;
}
return self;
}
-[numberValue]では上位16ビットを modifier、下位16ビットをキー値とする UInt32値を作り、これを NSNumberに入れて返す。modifier, code 共に UInt32なのだが、実際は 16ビットしか使っていないので(安易だが)これでいい。-[initWithSavekey:number:]はその逆の動きで、NSNumberで渡された値を分解して modifier と code へ戻す。
- - - -
動作確認は次回以降。