这可能吗?我没见过会产生普通老C矢量或数组的方法。我在我的数组中只有NSNumber对象,我需要它作为C向量或数组。
答案 0 :(得分:5)
mouviciel答案的替代方法是使用NSArray的getObjects:range:
方法。
id cArray[10];
NSArray *nsArray = [NSArray arrayWithObjects:@"1", @"2" ... @"10", nil];
[nsArray getObjects:cArray range:NSMakeRange(0, 10)];
或者,如果您在编译时不知道数组中有多少个对象:
NSUInteger itemCount = [nsArray count];
id *cArray = malloc(itemCount * sizeof(id));
[nsArray getObjects:cArray range:NSMakeRange(0, itemCount)];
... do work with cArray ...
free(cArray);
答案 1 :(得分:1)
如果您需要C数组来携带对象,可以将其声明为:
id cArray[ ARRAY_COUNT ];
或
id * cArray = malloc(sizeof(id)*[array count]);
然后你可以使用循环填充它:
for (int i=0 ; i<[array count] ; i++)
cArray[i] = [array objectAtIndex:i];