如何从NSArray制作C矢量或数组?

时间:2010-05-05 08:49:42

标签: c objective-c arrays vector nsarray

这可能吗?我没见过会产生普通老C矢量或数组的方法。我在我的数组中只有NSNumber对象,我需要它作为C向量或数组。

2 个答案:

答案 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];