NSMutableArray.Каков самый быстрый способ преобразовать его в обычный ole C-массив

StackOverflow https://stackoverflow.com/questions/1014725

Вопрос

Мне нравится удобство NSMutableArray, но иногда вам просто нужно перейти к хорошим ole C-массивам.Например, когда вы загружаете чередующиеся массивы вершин в OpenGL.

Какой самый быстрый способ скопировать содержимое NSMutableArray в C-массив?

Да, я понимаю, что такая перетасовка битов приводит к неэффективности, но я хотел бы посмотреть, смогу ли я обойти этот подход без снижения частоты кадров.

Приветствия, Даг

Это было полезно?

Решение

из списка рассылки cocoabuilder

id *buffer = malloc(numberOf_ItemsIWant_ToFetch * sizeof(id));
[myArray getObjects:buffer range:rangeOfItems]

Другие советы

Видишь -[NSArray getObjects:].Просто предоставьте ему буфер соответствующего размера, и NSArray заполнит буфер его содержимым.NSMutableArray является подклассом NSArray, поэтому он реагирует на все одни и те же методы.

NSMutableArray *arrayOfThings;
Element elements[arrayOfThings.count+1];

for (int i=0;i<arrayOfThings.count;i++)
{
    elements[i] = [arrayOfThings objectAtIndex:i];
}

Или что-то подобное.Я не вижу никакого простого способа сделать это в Apple docs.

int i=0;
foreach(YourClass *obj in array)
{
   carray[i++] = [obj yourMethodToConvertToCType];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top