今天在我的一个课程中,我了解到你可以通过在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中做这样的事情?
答案 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)
不,但你可以把变量放在一个数组中并以同样的方式实现。