我不熟悉C.如何将C数组传递给Objective-C函数?
我实际上需要一个将NSArray转换为C数组的类函数示例。 这就是我到目前为止所做的:
+ (NSArray *)convertArray:(NSString*)array { //I don't think this is correct: the argument is just a NSString parameter and not an array
NSMutableArray * targetArray = [NSMutableArray array];
for (i = 0; i < SIZE; i++) //SIZE: I dunno how to get the size of a C array.
{
[targetArray addObject: [NSString stringWithString:array[i]];
}
return targetArray;
}
答案 0 :(得分:2)
有几种方法。
如果您的数组大小在编译时是固定的,则可以使用C99 static
修饰符:
-(void) doSomething:(NSString *[static 10]) arg
{
}
如果没有,则必须将其作为两个单独的参数传递。一个指向它的第一个元素,第二个指向它的长度:
-(void) doSomething:(NSString **) arg count:(size_t) count
{
}
现在,您可以像访问其他任何阵列一样访问变量。
因为您正在处理Objective-c对象的C数组,所以您实际上可以使用NSArray
的内置构造函数将C数组转换为NSArray
:
NSArray *result = [NSArray arrayWithObjects:arg count:count];