如何创建一个动态数组,使其大小保持在客观c?

时间:2012-06-07 14:28:18

标签: objective-c ios c arrays automatic-ref-counting

我在目标c中编写了一个iOS程序,我需要一个具有以下特征的数组:

1)它的形状需要在运行时决定。

2)它需要能够作为属性或全局存储在objective-c类

3)当我在特定索引处插入一个对象时,它需要保留在该索引处。例如,如果我在索引5处插入,则该对象需要覆盖索引5处的任何内容。 没有移动此元素或任何其他元素(类似于java数组的工作原理)

我看过NSMutableArray,但这似乎不适合我上面描述的内容,因为它在插入时会移动元素。我也试过了NSString *myArray = malloc(10 * sizeof(NSString *));,但这给了我一个关于要求桥接演员的错误。我不知道那是什么。

我正在使用ARC,以防万一。

2 个答案:

答案 0 :(得分:8)

1)nameOfMyArray = [[NSMutableArray alloc] initWithObjects:@"obj1", @"obj2", "obj3",nil];

3)为什么不进行替换操作,而不是进行插入操作?

[nameOfMyArray replaceObjectAtIndex:0 withObject: @"newObject here"];

答案 1 :(得分:3)

听起来你想要典型的NSMutableArray行为。

NSMutableArray *arr = [[NSMutableArray alloc] init];
// add a few objects, let's assume there are 10 objects
[arr replaceObjectAtIndex:5 withObject:myObject];

使用替换方法,不会移动任何内容。你的代码看起来更像C,而不是像Objective-C那样。我建议阅读一本书或一些文档来理解如何使用Objective-C对象 - 你永远不会使用malloc对象,而应该使用alloc类方法。