2013-01-18 36 views
2

你不能從NSArray添加/刪除對象,因爲它是不可變的。但是你可以更新其中一個對象。通過ref或value爲NSMutableArray - (void)addObjectsFromArray?

相比之下,NSMutableArray可以添加/刪除對象,並有一個addObjectsFromArray方法,它接受一個NSArray作爲參數。

現在NSMutableArray中的對象最初是通過引用還是值在NSArray中?

這意味着如果我更新一個NSArray中以前傳遞給NSMutableArray的對象的屬性,NSMutableArray中的對象是否會看到該更改,反之亦然?

+0

在極少數情況下(我想不出任何副手)是在「放入」某種可可集合對象時複製的對象。 –

+0

相關知識我是新來的objective-c,這是我仍然加入到我的心智模型中的那種東西 –

回答

2

NSArrayNSMutableArray存儲對象的引用。
在你的情況下是的的變化將被反映爲NSArrayNSMutableArray都有相同的對象的參考。

+1

但是如果你有一個NSArray是一個NSMutableArray的副本,刪除/替換mutable中的一個對象數組(改變對象的內容)不會影響NSArray。 –

+0

@HotLicks你是絕對正確的,添加/刪除對象不會互相影響。 –

+1

從技術上講,數組的成員是通過值(複製)傳遞的,但如上所述,這些數組成員不是您的對象,只是指針。它可以幫助我處理數組,字典等,提醒自己我正在處理一組指向對象的指針,而不是一組對象。 –