Я хочу программно связать код с селекторами.Мне не ясно, как это сделать в Objective C. В Ruby я могу переопределить method_missing
.В Common Lisp я мог бы определить макрос.В Objective C я могу получить часть пути с @dynamic
свойствами, но мне неясно, как на самом деле их реализовать.
Вот конкретный пример: я хочу использовать NSMutableDictionary
дляпостоянно храните части моего объекта.В моем классе есть два метода, которые обрабатывают основную функциональность, и набор динамических свойств (соответствующие @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.