NSMutableArray. Qual é o caminho mais rápido para convertê-lo em um C-array ole planície
-
06-07-2019 - |
Pergunta
I como a conveniência de NSMutableArray mas às vezes você só precisa cair para boas ole C-matrizes. Como quando você está alimentando matrizes vértice intercalados para OpenGL.
O que é a maneira mais rápida de copiar o conteúdo de um NSMutableArray para um array C?
Yah, eu percebo isso pouco baralhar introduz ineficiência, mas eu gostaria de ver se eu posso esgueirar por com esta abordagem sem tomar um hit na taxa de quadros.
Cheers, Doug
Solução
da lista de discussão cocoabuilder
id *buffer = malloc(numberOf_ItemsIWant_ToFetch * sizeof(id));
[myArray getObjects:buffer range:rangeOfItems]
Outras dicas
Veja -[NSArray getObjects:]
. Basta dar-lhe um buffer de tamanho apropriado e NSArray vai preencher o buffer com o seu conteúdo. NSMutableArray é uma subclasse de NSArray, por isso responde a todos os mesmos métodos.
NSMutableArray *arrayOfThings;
Element elements[arrayOfThings.count+1];
for (int i=0;i<arrayOfThings.count;i++)
{
elements[i] = [arrayOfThings objectAtIndex:i];
}
Ou algo similar. Eu não vejo nenhuma maneira fácil de fazer isso nos docs Apple.
int i=0;
foreach(YourClass *obj in array)
{
carray[i++] = [obj yourMethodToConvertToCType];
}