Objective-C中的2D数组初始化

时间:2014-07-16 12:32:28

标签: objective-c nsmutablearray

在Java中,我有类似的东西

String arr[][] = new String[][];
for(int i=0;i<=count;i++) //"count" is some dynamically determined counter
{
    for(int j=0;j<=count;j++)
    {
        arr[i][j] = //some assignment
    }
}
//retrival of the strings in the same manner

我想声明一个空的2D数组,然后动态地为它指定'String'值,并在以后检索它们。 如何在Objective-C中实现这一目标?

我检查了一些关于这个主题的答案,但存储和反击机制对我来说仍然不清楚。

1 个答案:

答案 0 :(得分:2)

基本上你对对象做同样的事情,但必须为每个内部数组创建实例:

NSMutableArray *outer = [NSMutableArray new];
for( NSUInteger i = 0; i<=…; i++ )
{
  NSMutableArray *inner = [NSMutableArray new];
  for( NSUInteger j = 0; j<=…; j++ )
  {
     inner[j] = …;
  }
  outer[i] = inner;
}

访问:

id value = outer[…][…];

也许这更容易理解,因为双重下标用于在初始化时写入数组。但它对外部数组上的索引访问有性能损失:

NSMutableArray *array = [NSMutableArray new];
for( NSUInteger i = 0; i<=…; i++ )
{
  array[i] = [NSMutableArray new];
  for( NSUInteger j = 0; j<=…; j++ )
  {
     array[i][j] = …;
  }
}