2009-12-22 59 views
1

我有一個包含數組對象的數組。陣列陣列。當我將描述方法應用於Array時,我看不到內部數組中的數據。下面是代碼:NSMutableArray描述方法 - 陣列陣列

[runScoreDataArray addObject:[NSString stringWithString:currentUser]]; 
[runScoreDataArray addObject:[NSNumber numberWithDouble:mainScores.scoreTotal]]; 

NSLog(@"Array1 contains: %@", [runScoreDataArray description]); 

// Now add the array runScoreDataArray to the Array highScoresArray 
[highScoresArray addObject: runScoreDataArray]; 

// Empty the runScoresData Array after each run. 
[runScoreDataArray removeAllObjects]; 

NSLog(@"Array2 contains: %@", [highScoresArray description]); 

的NSLog的打印輸出runScoresDataArray讀,因爲它應該: 數組1包含:(USER1,34500)

的的NSLog爲highScoresArray寫着: ARRAY2包含:((),( ),())

我期待在NSLog打印輸出中看到每個數組元素的數據,而不是空括號。

問題:如何使用描述方法打印出數組數組的內容?

+0

快速問題:Objective-C數組是引用類型還是值類型? – 2009-12-22 00:31:43

+0

這裏使用的數組是NSMutableArrays,其實例是引用。 (Obj-C也支持C風格的數組,但很顯然這裏沒有發生,因爲消息正在發送給他們。) – 2009-12-22 00:35:37

+0

我希望得到OP的回覆。因爲回答這個簡單問題的行爲會使代碼中的錯誤顯而易見。 – 2009-12-22 00:39:28

回答

6

當您-addObject:runScoreDataArrayhighScoresArray,它不是複製數組中的值,而是添加對父數組的實際runScoreDataArray的引用。

所以,當你去清除runScoreDataArray-removeAllObjects,這也影響highScoresArray內的引用。

取決於你以後,你可能想是這樣的:

[highScoresArray addObject: [NSArray arrayWithArray:runScoreDataArray]]; 

插入淺拷貝。