1

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

1 回答 1

2

有几种方法。

如果你的数组大小在编译时是固定的,你可以使用 C99static修饰符:

-(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];
于 2012-06-28T14:58:55.557 回答