2010-08-27 67 views
1

如果我有一個的NSMutableArray:關於產品的NSMutableArray

NSMutableArray *principalTable; 

,我有其他的NSMutableArray:

NSMutableArray *secondTable; 

和我這樣做:

[secondTable addObject:@"string"]; 

[principalTable addObject: secondTable]; 

[secondTable removeAllObjects]; 

的principalTable有1個對象,但這個對象裏面什麼也沒有。所以我的問題是:

  • 當我在數組中添加一個對象,數組指向該對象,或複製數組中的對象?
  • 當我添加一個nsmutabledictionnary時,它是一樣的嗎?

回答

2
[secondTable addObject:@"string"]; 

[principalTable addObject: secondTable]; 

[secondTable removeAllObjects]; 

當你做到以上,principalTable將包含對secondTable NSMutableArray的實例的引用,將直接包含字符串。因此,當你​​,你正在清空secondTableprincipalTable將繼續舉行現在空的可變數組的引用。

您的任何代碼都不會複製任何內容。

NSMutableDictionary複製密鑰。不值。

+0

所以如果我在一個循環中,我必須每次創建一個新表並將其添加到principalTable? – alex 2010-08-27 19:55:18

+0

取決於您的需求;如果你想要一個數組數組,那麼你需要每次傳遞一個新數組。如果你想要一個字符串數組,你根本不需要第二個數組。 – bbum 2010-08-27 22:31:13

0

該數組包含一個對添加的對象的引用(即指針)。因此,當您從secondTable中刪除所有對象時,您將從原理表的元素中刪除相同的數組。