2

プログラムでコードをセレクターに関連付けたい。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でそれを行う慣用的な方法があるのだろうか。

4

3 に答える 3