如何将C数组传递给Objective-C函数?

时间:2012-06-28 14:55:28

标签: objective-c c

我不熟悉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;
}

1 个答案:

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