NSMutableArray. 그것을 평범한 올레 C- 어레이로 변환하는 가장 빠른 방법은 무엇입니까?

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

문제

나는 nsmutablearray의 편리함을 좋아하지만 때로는 좋은 올레 C 배열로 떨어 뜨려야합니다. 인터리브 된 정점 어레이를 OpenGL에 공급할 때처럼.

NSMutableARRAY의 내용을 C-Array에 복사하는 가장 빠른 방법은 무엇입니까?

야, 나는이 비트 셔플 링이 비 효율성을 소개한다는 것을 알고 있지만 프레임 속도로 인기를 얻지 않고이 접근법으로 몰래 들어갈 수 있는지 알고 싶습니다.

건배, 더그

도움이 되었습니까?

해결책

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