动态构造变量名称,如Actionscript中所示

时间:2012-10-16 17:06:14

标签: objective-c variables syntax

  

可能重复:
  Objective C Equivalent of PHP’s “Variable Variables”

今天在我的一个课程中,我了解到你可以通过在Actionscript 3.0中的字符串中构建其名称来访问变量,如下所示:

var star1:symbol;
var star2:symbol;
var star3:symbol;
var star4:symbol;

for(i=1; i <= 4; i++)
    [this "star" + i].method = something

获取star1,然后star2,然后star3,然后star4,并使用它们执行某些方法。

有没有办法在Objective-C中做这样的事情?

3 个答案:

答案 0 :(得分:3)

不太整洁,但是key-value coding会这样做:

[self setValue:something forKey:[NSString stringWithFormat:@"star%u", i]]

编辑:在反思中,作为非Actionscript用户,您是否打算访问属性或调用方法是不清楚的。

你可以使用NSSelectorFromString在运行时将方法的名称转换为选择器,然后[self performSelector:...]调用该东西,如果它是后者。

答案 1 :(得分:1)

是。使用NSArray。然后你可以做这样的事情:

NSArray *array = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];
for (int i = 0; i < [array count]; i++) {
    [[array objectAtIndex:i] doMethod];
}

甚至更容易:

NSArray *array = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];
for (id obj in array) {
    [obj doMethod];
}

答案 2 :(得分:0)

不,但你可以把变量放在一个数组中并以同样的方式实现。