2012-03-05 60 views
4

我有一個NSMutabelArray,其中有一些對象作爲我的View-Controller的屬性。 現在我推這個VC時傳遞這個數組。Objective-C屬性的複製屬性創建了一個深層副本還是一個淺層副本?

我最初做了分配。

但現在我需要修改陣列,只要設備旋轉,在VC中不會影響前一個VC中的那個。 所以使它成爲一個複製屬性。

現在我正在單獨更改數組中的對象。

但以某種方式......我的prev VC中的數組也在改變。

我必須創建一個新的NSMutabelArray與修改的對象,並必須設置爲我的財產。

它的複製屬性是否只是將另一個數組與相同的對象引用添加到數組中?

回答

10

copy屬性表示該屬性將被指派給發送copy消息之後返回的對象,該消息傳遞給傳入的對象。這意味着深度還是淺度取決於被複制的對象。 Foundation集合創建淺拷貝,因爲它允許copy針對不可變集合實現爲retain

3

是否複製屬性只是使另一個數組與相同的對象引用添加到數組?

是的,就是這樣。

對於深入複製this answer中的數組有一些建議。也許其中一個會爲你工作?

相關問題