将NSMutableArray添加到另一个NSMutableArray时,最后一个数组值将被覆盖

时间:2012-11-26 07:23:38

标签: iphone objective-c nsstring nsmutablearray nsarray

    NSMutableArray *no1=[[NSMutableArray alloc]init];
    NSMutableArray *no2=[[NSMutableArray alloc]init];

    for(int i=0;i<3;i++)
    {
        for (int j=0;j<=i;j++)
        {
            NSString *no_str=[NSString stringWithFormat:@"%d",j];
            [no1 addObject:no_str];
        }
        [no2 addObject:no1];
        [no1 removeAllObjects];
    }
    NSLog(@"Final:%@",no2);

我的输出如下:

最终:(         (         0,         1,         2     )         (         0,         1,         2     )         (         0,         1,         2     ) )

但我需要这样的输出:

最终:(         (         0     )         (         0,         1     )         (         0,         1,         2     ) )

请任何人帮助我。

2 个答案:

答案 0 :(得分:0)

更新的代码: -

NSMutableArray *no1;

    NSMutableArray *no2=[[NSMutableArray alloc]init];

    for(int i=0;i<3;i++)
    {
        no1=[[NSMutableArray alloc]init];
        for (int j=0;j<=i;j++)
        {
            NSString *no_str=[NSString stringWithFormat:@"%d",j];
            [no1 addObject:no_str];
        }
        [no2 addObject:no1];
        [no1 release];
    }
    NSLog(@"Final:%@",no2);

答案 1 :(得分:0)

enter image description here

我假设你正在使用ARC,所以这段代码会很好用。

NSMutableArray *no1;
NSMutableArray *no2=[[NSMutableArray alloc]init];

for(int i=0;i<3;i++)
{
    no1=[[NSMutableArray alloc]init];
    for (int j=0;j<=i;j++)
    {
        NSString *no_str=[NSString stringWithFormat:@"%d",j];
        [no1 addObject:no_str];
    }
    [no2 addObject:no1];
}
NSLog(@"Final:%@",no2);

编辑:即使你将init分配给no1,结果也是一样的。