加快NSMutableArray声明?

时间:2011-07-13 22:29:15

标签: objective-c cocoa-touch

我需要加速声明一个二维数组,而下面的“示例”在分配完成时太慢了。如何分配10列,其中每列最多可包含20个元素...让剩余部分为nil / null。是否有自动化,或者我是否必须遍历每个列并使用20个nil对象添加对象(SLOW)和init?

ppp = [NSMutableArray arrayWithCapacity: 10];

[ppp addObject:[[NSMutableArray alloc] initWithObjects:
                    @"1",
                    @"2",
                    @"3",
                    @"4",
                    nil
                    ]];

[ppp addObject:[[NSMutableArray alloc] initWithObjects:
                    @"a1",
                    @"b2",
                    @"c3",
                    nil
                    ]];

感谢...

(让我这样说吧:在“standard-c”中我可以声明“* char person [100] [100]”...空间声明完成。现在只需写入地址。动态分配是很多行交换是cpu和内存消耗。在“Objective-c”中有什么东西可以完成NSArray * person [100] [100]的事情吗?)

1 个答案:

答案 0 :(得分:1)

为什么不使用单个NSMutableArray并计算行和列,而不是使用数组数组?我知道您的2D阵列是不规则的,即每个“子”阵列可能有不同的长度,但您可以计算最大值。你桌子的“宽度”和最大“高度”,只需留下一些物品:

ppp = [[NSMutableArray alloc] initWithObjects:
    @"1", @"2", @"3", @"4", @"", @"",
    @"a1", @"b2", @"c3", @"", @"", @"",
    etc...
    ];

现在你只需将item [1,2]计算为itemAt:6 * 1 + 2。

不确定这是否有帮助,但它可能会加快速度。

另一种方法是使用简单的C数组。