在目标C中动态生成属性/函数调用

时间:2010-08-05 14:28:15

标签: iphone objective-c xcode

是否可以动态构建属性或函数调用?我有一组想要以相同方式呈现的视图。因此,如果我的部分代码是这样的

self.ViewName.hidden = NO;

我希望使用变量作为视图的名称,有没有办法做到这一点,比如

self {var} .hidden = NO;

其中'var'是视图名称的NSString并在运行时进行评估?我知道这不适用于尖括号,只是为了说明我是如何构建属性引用的。

由于

3 个答案:

答案 0 :(得分:2)

您可以使用NSSelectorFromString函数在运行时动态获取选择器。因此,如果您想根据字符串获取viewName,您将使用

[[self performSelector:NSSelectorFromString(@"ViewName")] setHidden:NO];

答案 1 :(得分:0)

您可以使用setValue:forKeyPath:方法:

NSString* path = [NSString stringWithFormat:@"%@.hidden", viewName];
[self setValue:[NSNumber numberWithBool:YES] forKeyPath:path];

答案 2 :(得分:0)

如果您有多个视图,则应将它们放在一个数组中并分别访问该数组的每个元素。

NSMutableArray * views...
[[views objectAtIndex:i] setHidden:NO];