2012-06-28 2 views
1

Я не знаком с C. Как передать массив C функции Objective-C?Как передать массив C объектив-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

Взгляните на HTTP : //stackoverflow.com/questions/8086634/creating-a-nsarray-from-ac-array и http://stackoverflow.com/questions/5150312/using-c-arrays-in-objective-c –

ответ

2

Есть несколько способов.

Если размер массива фиксируется во время компиляции, вы можете использовать C99 static модификатор:

-(void) doSomething:(NSString *[static 10]) arg 
{ 

} 

Если нет, то вы должны передать его в качестве двух отдельных аргументов. Один как указатель на первый элемент этого, а второй, как длина его:

-(void) doSomething:(NSString **) arg count:(size_t) count 
{ 

} 

Теперь вы можете получить доступ к переменным, как и любой другой массив вы можете иметь.

Потому что вы имеете дело с C-массив Objective-C объектов, вы можете использовать NSArray «S построен в конструкторе для превращения C-массив в NSArray:

NSArray *result = [NSArray arrayWithObjects:arg count:count]; 
+0

Как сделать вычислить размер массива? Я не знаю, что значение передается параметру count ... – aneuryzm

+0

@Patrick вы должны передать количество элементов в массиве. –

+0

Но этот метод используется для массивов разного размера. Как получить длину массива в C? – aneuryzm

Смежные вопросы