Это возможно? Я не видел метода, который генерировал бы простой старый вектор C или массив. У меня есть только объекты NSNumber в моем массиве, которые мне нужны как вектор C или массив.
Как сделать вектор C или массив из NSArray?
comment
возможный дубликат stackoverflow.com/questions/1011711/nsarray-to-c-array
- person Björn   schedule 05.05.2010
Ответы (2)
Альтернативой ответу 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);
person
dreamlax
schedule
05.05.2010
Если вам нужен массив C для переноса объектов, вы можете объявить его как:
id cArray[ ARRAY_COUNT ];
or
id * cArray = malloc(sizeof(id)*[array count]);
Затем вы можете заполнить его с помощью цикла:
for (int i=0 ; i<[array count] ; i++)
cArray[i] = [array objectAtIndex:i];
person
mouviciel
schedule
05.05.2010
Объекты должны сохраняться по мере их помещения в массив c (т.е. [cArray[i]retain]), потому что NSArray может быть освобожден, тем самым освобождая все содержащиеся в нем объекты.
- person yabada; 05.05.2010
Использование
getObjects:range:
было бы быстрее.
- person dreamlax; 05.05.2010