NSMutableArray的NSMutableArray

时间:2018-02-14 00:22:14

标签: objective-c arrays pointers cocoa-touch nsmutablearray

我想创建NSMutableArray的NSMutableArray。下面是伪代码:

NSMutableArray *mapcoords = [[NSMutableArray alloc] init]; 
NSMutableArray *clustercoords = [[NSMutableArray alloc] init];

while (!FINISHED)
{
   for(int j = 1;j <= 4;j++)
    {
       x = arc4random_uniform(45);
       [mapcoords addobject:[NSNumber numberWitInt:x]];

    }

    [clustercoords addobject:mapcoords];
    [mapcoords removeAllObjects];
}

当我在循环结束时检查“clustercoords”数组时,所有对象都包含相同的值。我想这一定是因为我每次将它添加到clustercoords时指向同一个对象(mapcoords)。

我认为我需要一个不同的几个不同的“mapcoords”数组,以便mapccords中的对象是唯一的。这是正确的假设吗?还有另一种选择吗?

1 个答案:

答案 0 :(得分:1)

你的假设是正确的。在mapcoords循环中移动while的声明和创建。

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

while (!FINISHED) {
    NSMutableArray *mapcoords = [[NSMutableArray alloc] init]; 
    for(int j = 1; j <= 4; j++) {
       u_int32_t x = arc4random_uniform(45);
       [mapcoords addObject:@(x)];
    }

    [clustercoords addObject:mapcoords];
}