Свойства будут иметь метод установки и метод получения. В вашем случае, я предполагаю, что есть setPropA, setPropB, setPropC для сеттеров и PropA, PropB, PropC для геттеров.
Затем я передаю строку «PropA» в утилиту, указывая, что я хочу получить доступ к свойству с именем PropA.
Утилита может получить значение по
id val = [aObj performSelector:NSSelectorFromString(@"PropA")];
И установите свойство по
[aObj performSelector:NSSelectorFromString(@"SetPropA") withObject:newValue];
Или, Вы можете передать установщик и получатель в качестве параметра с помощью NSStringFromSelector()
, превратить селектор в строку NSString. Например, я передаю сеттер и геттер по NSDictionary.
NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
NSStringFromSelector(@selector(setPropA:)), kSetterKey,
NSStringFromSelector(@selector(PropA)), kGetterKey, nil];
// inside myUtil
NSString *setter = [userInfo objectForKey:kSetterKey];
[aObj performSelector:NSSelectorFromString(setter) withObject:newValue];
NSString *getter = [userInfo objectForKey:kGetterKey];
id val = [aObj performSelector:NSSelectorFromString(getter)];
Надеюсь, это поможет.