NSMutableArray. Какой самый быстрый способ преобразовать его в простой оле-C-массив - PullRequest
2 голосов
/ 18 июня 2009

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

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

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

Ура, Дуг

Ответы [ 4 ]

7 голосов
/ 19 июня 2009

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

id *buffer = malloc(numberOf_ItemsIWant_ToFetch * sizeof(id));
[myArray getObjects:buffer range:rangeOfItems]
6 голосов
/ 18 июня 2009

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

1 голос
/ 18 июня 2009
int i=0;
foreach(YourClass *obj in array)
{
   carray[i++] = [obj yourMethodToConvertToCType];
}
1 голос
/ 18 июня 2009
NSMutableArray *arrayOfThings;
Element elements[arrayOfThings.count+1];

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...