這是我關於Stack Overflow的第一個問題,我希望它非常簡單。我有以下的代碼,我寫弄清楚到底是什麼,我在這種情況下,增加「outerArray」:使用2D NSMutableArray混淆內存行爲
NSMutableArray *contents = [[NSMutableArray alloc] initWithContentsOfFile:path];
outerArray = [[NSMutableArray alloc] initWithCapacity:2];
[outerArray addObject:contents];
[contents removeObjectAtIndex:0];
[contents release];
contents = nil;
NSMutableArray *test = [outerArray objectAtIndex:0];
NSLog(@"Test at 0: %@", [test objectAtIndex:0]);
現在,混淆的部分是這樣的:我看到的是元素原本在索引1的內容被NSLog寫出。這是沒有意義的,我:
- 如果我加入「內容」副本「outerArray」,然後我希望「測試」包含該副本,它將輸出的原始0個元素'內容'。
- 如果我將'contents'的指針添加到'outerArray',那麼我期望NSLog行會引發錯誤。
我唯一能想到的就是我將一個指向'contents'的指針添加到'outerArray',但是釋放它並不會覆蓋數據。所以,我基本上很幸運,NSLog並沒有失敗,但可能會在稍後。
這是正確的嗎?
當然!謝謝! – 2012-02-01 21:38:04