声明具有未知大小目标c的对象X的数组

时间:2012-11-01 22:27:28

标签: objective-c

我如何在未知大小的.h文件中声明一个数组,我会计算出该类中的一个函数?

例如,我可能有20或30个NSArrays(只是一个例子,不是我需要的),但我不知道第一次调用类时的确切数字

在实施文件中..

-(id) init {
   if self = ..
       number_of_arrays = 50; // this can be whatever value
}

在.h:

int number_of_arrays;
NSArray *arrays_of_unknown_size[number_of_arrays]; // but number of arrays is not init !

另外,NSArray **阵列的意义是什么?我是否能够在h文件中声明,然后在.m文件中声明实际大小?

谢谢!

2 个答案:

答案 0 :(得分:2)

你有两个选择。

1)使其成为NSArray的NSArray,或

2)声明为:

NSArray **arrays_of_unknown_size;

然后,当您知道实际大小时,可以使用malloc / calloc指针。然后,您需要为C阵列的每个元素分配一个NSArray。

答案 1 :(得分:2)

就像rmaddy所说,你可以用malloc分配数组:

arrays_of_unknown_size= (NSArray**)malloc(N*sizeof(NSArray*));

您也可以使用realloc重新分配它,并且大小可能会改变 另一种方法是使用包含数组的数组:

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

然后,当数组已经填充时,获取所需的单个数组:

NSArray* myArray=[array_of_unknown_size objectAtIndex: myIndex];

当然arrays_of_unknown_size太长了,不要使用这个名字,这只是一个例子。