在objective-c / iPhone中在运行时更改变量名称

时间:2011-10-27 21:37:28

标签: objective-c variables uiimageview nsmutablearray while-loop

我有一个循环来计算数组中有多少项,然后我需要根据当时正在引用的索引创建一个UIView。例如,我有:

int itn2 = 0;
    while(itn2 < [imageLinks count]){
//imageLinks is my NSMutableArray
    NSURL * imageURL = [NSURL URLWithString:[imageLinks objectAtIndex:itn2]];
    NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
    UIImage *image = [UIImage imageWithData:imageData];

我需要我分配的UIImageView,其名称基于当前整数itn2(0),如:

    [viewVar%i,itn2] = [[UIImageView alloc] initWithImage:image];

所以当循环从0变为2时,我将有3个UIViews,名为viewVar0,viewVar1,viewVar2,我该怎么做?我习惯了matlab,我可以做viewVar(itn2)。

1 个答案:

答案 0 :(得分:1)

我认为你不能轻易地创建变量。

我使用一个可变数组来保存UIImageViews

NSMutableArray *imageViews = [NSMutableArray arrayWithCapacity:[imageLinks count]];
for(NSUInteger i=0; i < [imageLinks count]; i++) {
    UIImage *image = [[UIImage imageWithData:[NSData dataWithContentsOfURL:[imageLinks objectAtIndex:i]]];
    [imageViews addObject:[[UIImageView alloc] initWithImage:image]];
}

然后,使用[imageViews objectAtIndex:0]作为第一个,等等。 如果您在应用中做了很多事情,可以添加如下宏:

#define IV(idx) (idx < [imageViews count] ? [imageViews objectAtIndex:idx] : nil)

为了写[someView addSubview:IV(0)]或任何你需要的东西。但我不推荐它。

(注意:如果你不使用ARC,你需要autorelease一些东西)