iPhone SDK의 ObjectiveC에서 2D 배열의 동적 메모리 할당 예제가 필요합니다. 샘플 코드는 높이 평가됩니다. 포인터의 배열을 선언하고 각 인덱스는 런타임에 배열을 선언합니다.2D 동적 메모리 할당 - ObjectiveC
감사 NSArrays를 들어
iPhone SDK의 ObjectiveC에서 2D 배열의 동적 메모리 할당 예제가 필요합니다. 샘플 코드는 높이 평가됩니다. 포인터의 배열을 선언하고 각 인덱스는 런타임에 배열을 선언합니다.2D 동적 메모리 할당 - ObjectiveC
감사 NSArrays를 들어
은 C 배열과 NSArrays을 공모 할 이상이지만, 수행 할 수 있습니다
NSMutableArray *myArrays[];
myArrays = malloc(sizeof(NSMutableArray *) * numberOfArrays);
더 나은 솔루션이 NSArrays의있는 NSArray를 사용하는 것 중 하나;
NSMutableArray *rows = [NSMutableArray array];
[rows addObject: [NSMutableArray array]];
[rows addObject: [NSMutableArray array]];
[rows addObject: [NSMutableArray array]];
NSMutableArray *row0 = [rows objectAtIndex: 0];
[row0 addObject: [Datum new]];
[row0 addObject: [Datum new]];
[row0 addObject: [Datum new]];
.... .... 등
아니면 그냥 직접 포인터 배열을 사용
Datum **my2DArray = malloc(sizeof(Datum *) * width * height);
이어서, 특정 직교 my2DArray
내의 좌표의 간단한 비트이고 수학 :
my2DArray[ x + (y * width) ] = ....;
그러면 주어진 (x, y) 좌표를 선형 x (실제로 y는 스트라이드가되고 x는 스트라이드 내의 오프셋이됩니다).
는이 같은 것을 사용할 수 있습니다 : 당신이 동적 데이터에 의해 다른 것을 의미하는 경우
NSMutableArray *array2d = [[NSMutableArray alloc] init];
for (int i = 0; i < d1; i++)
{
NSMutableArray *innerArray = [NSMutableArray array];
[array2D addObject:innerArray];
for (int j = 0; j < d2; j++)
{
[innerArray addObject:myDynamicData];
}
}
는 다음 뜻을 정확히 설명하는 영업 이익을 편집하십시오.
* "모든 배열은 컴파일 할 때 지정된 크기를 가져야합니다."* - C99에는 VLA가 있으며 GCC는 이미 확장으로 더 오래 지원했습니다. 게다가 * 동적 배열 *, 즉 힙 할당 배열을 가질 수 있습니다. –
또한 내부 루프는 'array2d'에 객체를 추가해서는 안되며 새로 추가 된 배열을 추가해야합니다. –
[[[NSMutableArray alloc] init] autorelease] 대신 [NSMutableArray array] 편리한 메소드를 사용하십시오. 더 짧고 간결합니다. – zaph
물론 C는 동적 메모리 할당을 사용합니다. malloc과 realloc을 보라. 이 기능을 사용하면 메모리를 할당하고 필요할 경우 나중에 크기를 조정할 수 있습니다. 모든 메모리 사용량을 추적하고 완료 한 후에는()를 잊지 마세요.
C 배열 또는 NSArrays에 대해 이야기하고 있습니까? –
NSArrays, 나는 포인터의 배열을 선언하고 각 포인터는 배열을 가리키고 싶다. –