プログラムでコードをセレクターに関連付けたい。Objective C でそれを行う方法については明確ではありません。Ruby では、オーバーライドする可能性がありますmethod_missing
。Common Lisp では、マクロを定義することがあります。Objective C では、プロパティを使用してその方法の一部を取得できますが、@dynamic
実際にそれらを実装する方法については不明です。
具体的な例を次に示します。 を使用しNSMutableDictionary
て、オブジェクトの一部を永続的に保存したいと考えています。私のクラスには、基本的な機能を処理する 2 つのメソッドと、一連の動的プロパティがあります (一致@property
する が に存在します@interface
)。
@dynamic name;
@dynamic age;
@dynamic favoriteColor;
- (id)accessor:(NSString*)name {
return [[self dict] objectForKey:name];
}
- (void)mutator:(NSString*)name value:(id)value{
[[self dict] setObject:value forKey:name];
[[self dict] writeToFile:[self filename] atomically:YES];
}
今、私は次のような呼び出しを翻訳する方法を探しています
[myInstance setName:@"iter"];
の中へ
[self mutator:@"name" value@"iter"];
ObjCでそれを行う慣用的な方法があるのだろうか。