2011-05-17 56 views

回答

3

將bookmarkArray直接添加到issueArray。所以然後issueArray是一個數組持有單個對象,這是一個數組bookmarkArray。如果你改變了bookmarkArray,那麼你可以改變issueArray中的東西。

如果你的意思是目前bookmarkArray添加所有的對象issueArray那麼我建議:

[issueArray addObjectsFromArray:bookmarkArray]; 

如果你想利用bookmarkArray的副本,並將其添加到issueArray那麼我建議準確同樣的事情taskinoor已經提出:

NSMutableArray *bookmarkCopy = [bookmarkArray mutableCopy]; 
[issueArray addObject:bookmarkCopy]; 
[bookmarkCopy release]; 

或者:

NSMutableArray *bookmarkCopy = [bookmarkArray copy]; 
[issueArray addObject:bookmarkCopy]; 
[bookmarkCopy release]; 

如果你不需要副本是可變的。

+0

+1比我更加冗長:-P – taskinoor 2011-05-17 11:44:55

4

它,因爲當你調用addObject它添加引用,而不是對象的副本。因此原始對象中的任何更改都會反映在存儲在數組中的引用中。如果你想存儲一個對象的副本,然後複製它並存儲在數組中。

NSMutableArray *bookmarkCopy = [bookmarkArray mutableCopy]; 
[issueArray addObject:bookmarkCopy]; 
[bookmarkCopy release]; 
0

這很可能是他們可能引用了相同的對象。你可以檢查他們是否?

0

Tommy和taskinoor的解釋是正確的。然而,如果你的目標是要issueArray包含在bookmarkArray的對象,這樣做:

[issueArray addObjectsFromArray:bookmarkArray]; 
[bookmarkArray removeAllObjects]; 

確保你的區別清楚。在taskinoor的代碼中,您將向bookmarkArray添加一個對象,並且該對象本身就是一個數組。在上面的行中,您將[bookmarkArray count]對象添加到issueArray。

相關問題