NSMutableArray. 그것을 평범한 올레 C- 어레이로 변환하는 가장 빠른 방법은 무엇입니까?
-
06-07-2019 - |
문제
나는 nsmutablearray의 편리함을 좋아하지만 때로는 좋은 올레 C 배열로 떨어 뜨려야합니다. 인터리브 된 정점 어레이를 OpenGL에 공급할 때처럼.
NSMutableARRAY의 내용을 C-Array에 복사하는 가장 빠른 방법은 무엇입니까?
야, 나는이 비트 셔플 링이 비 효율성을 소개한다는 것을 알고 있지만 프레임 속도로 인기를 얻지 않고이 접근법으로 몰래 들어갈 수 있는지 알고 싶습니다.
건배, 더그
해결책
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];
}
제휴하지 않습니다 StackOverflow