Контекст: У меня есть несколько CGPathRef в пользовательском классе, полученном из NSObject, с именем model
. Я ищу способ вернуть определенный CGPathRef, основанный на строке, которую я генерирую во время выполнения.Как я могу получить доступ к свойствам, не совместимым с KVC, только с их именем?
Упрощенный пример, если я мог бы использовать KVC:
#model.h
@property (nonatomic) CGMutablePathRef pathForwardTo1;
@property (nonatomic) CGMutablePathRef pathForwardTo2;
@property (nonatomic) CGMutablePathRef pathForwardTo3;
...
#someVC.m
-(void)animateFromOrigin:(int)origin toDestination:(int)destination{
int difference = abs(origin - destination);
for (int x =1; x<difference; x++) {
NSString *pathName = [NSString stringWithFormat:@"pathForwardTo%d", x];
id cgPathRefFromString = [self.model valueForKey:pathName];
CGPathAddPath(animationPath, NULL, cgPathRefFromString);
}
}
Вопрос: Как я могу получить доступ к не-КЦУ совместимых свойств (CGPathRef) с только их именем, представленное в виде строки?
Вы называете их «свойствами». Имеют ли они методы доступа? –
Да, надеюсь, мое редактирование разъяснило это немного. Спасибо –
Конечно, вы можете использовать ops 'performSelector' для вызова методов getter, но неясно, как вы возвращаете этот тип результата. Возможно, вам придется использовать 'methodForSelector', а затем вызывать реализацию« raw »метода, чего я никогда не пытался. –