我如何在未知大小的.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文件中声明实际大小?
谢谢!
答案 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太长了,不要使用这个名字,这只是一个例子。