我需要一些iPhone SDK中的ObjectiveC動態內存分配二維數組的例子。示例代碼將不勝感激。我想聲明一個指針數組,然後每個索引將在運行時聲明一個數組。二維動態內存分配 - ObjectiveC
感謝
我需要一些iPhone SDK中的ObjectiveC動態內存分配二維數組的例子。示例代碼將不勝感激。我想聲明一個指針數組,然後每個索引將在運行時聲明一個數組。二維動態內存分配 - ObjectiveC
感謝
它是怪異串通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)座標轉換爲線性inde x(實際上,y成爲步幅,x成爲步幅內的偏移量)。
對於NSArrays,您可以使用這樣的事情:
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];
}
}
如果你的意思是通過動態數據意外的話,請編輯OP解釋你的意思是什麼。
當然,嗯,C有動態內存分配。看看malloc和realloc。有了這個,你可以分配內存並在需要時調整大小,你只需要跟蹤所有的內存使用情況,並且在完成時不要忘記釋放()。
你說的是C數組還是NSArrays? – 2010-12-04 16:13:05
NSArrays,我想聲明一個指針數組,每個指針將指向一個數組。 – 2010-12-04 16:58:51