你這樣做的方式非常好。NSArray
在C中沒有本地二維語法,如原始數組(int[][]
,double[][]
等)。相反,您必須使用數組數組來嵌套它們。下面是如何做到這一點的例子:
NSString *hello = @"Hello World";
NSMutableArray *insideArray = [[NSMutableArray alloc] initWithObjects:hello,nil];
NSMutableArray *outsideArray = [[NSMutableArray alloc] init];
[outsideArray addObject:insideArray];
// Then access it by:
NSString *retrieveString = [[outsideArray objectAtIndex:0] objectAtIndex:0];
要在以後的某個時間訪問陣列,你會做這樣的事情:
NSArray* innerArray = [mutableArrayPtr objectAtIndex:0];
NSObject* someObject = [innerArray objectAtIndex:0];
當然,改變0
到任何指標,你居然需要檢索。
EDIT:
問:它是 「initWithObjects」(或) 「insertObject:[NSMutableArray裏arrayWithObjects:imagePtrData,urlInStr,零]」 爲二維?
答:initWithObjects
和insertObject
既能允許您創建二維數組。例如,你可以這樣做:
NSMutableArray* arrayOne = [[NSMutableArray alloc] initWithObjects:[NSArray initWithObjects:@"One", @"Two", @"Three", nil], [NSArray initWithObjects:[@"Four", @"Five", @"Six", nil], nil];
// NOTE: You need to release the above array somewhere in your code to prevent a memory leak.
或:
NSMutableArray* arrayTwo = [NSMutableArray array];
[arrayTwo insertObject:[NSArray arrayWithObjects:@"One", @"Two", @"Three", nil] atIndex:0];
它是 「initWithObjects」(或) 「insertObject:[NSMutableArray的arrayWithObjects:imagePtrData,urlInStr,零]」 兩個維度? – Getsy 2011-04-18 12:55:46
由於CFArray具有本機2D語法?內置的C數組類型「T [n]」與CFArray不同。 – kennytm 2011-04-18 12:59:19
@KennyTM:謝謝你的提示,我看你是對的!我已經更新了答案以反映這個珍聞。再次感謝,我每天都會學到新的東西。 – FreeAsInBeer 2011-04-18 13:02:23