我需要在循环中使用中间数组

时间:2014-09-25 10:35:53

标签: objective-c arrays loops for-loop

我有一个基本问题。我需要在循环中使用中间数组。这是我的代码:

NSMutableArray *interArray = [[NSMutableArray alloc] initWithCapacity:2];
NSMutableArray *finalyArray = [[NSMutableArray alloc] init];
NSInteger a;
for(int j=0; j<5; j++)
{    [interArray removeAllObjects];
     for(int i=0; i<2; i++)
     {
     a = [array ObjectAtInde:i];  // this is existing array
     [interArray addObject:a];
     }
    [finalyArray addObject:interArray];
}

但是当我删除中间数组中的对象时,我在finaly数组中得到空数组。怎么解决?感谢

1 个答案:

答案 0 :(得分:1)

它无法正常工作的原因是因为interArray是对您清空并填充循环然后添加到finalyArray的对象的引用,但是您要添加每次都使用相同的中间数组。

你想要做什么呢?在循环中创建一个新的中间数组,因此每个中间数组都是一个单独的对象:

NSMutableArray *finalyArray = [[NSMutableArray alloc] init];
NSInteger a;
for(int j=0; j<5; j++)
{
     NSMutableArray *interArray = [[NSMutableArray alloc] initWithCapacity:2];
     for(int i=0; i<2; i++)
     {
     a = [array ObjectAtIndex:i];  // this is existing array
     [interArray addObject:a];
     }
    [finalyArray addObject:interArray];
}

(请注意,此代码无论如何都无法正常工作,因为如果不先将NSInteger包装在NSNumber对象中,就无法将{{1}}存储在集合类中。