NSMutableArray.Каков самый быстрый способ преобразовать его в обычный ole C-массив
-
06-07-2019 - |
Вопрос
Мне нравится удобство 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];
}