【问题标题】:Copy attribute of Objective-C property creates a deep copy or a shallow copy?Objective-C 属性的 Copy 属性创建深拷贝还是浅拷贝?
【发布时间】:2012-03-23 02:13:52
【问题描述】:

我有一个NSMutabelArray,其中包含一些对象作为我的View-Controller 的属性。 现在我在推送这个 VC 时传递这个数组。

我最初将其分配。

但现在我需要在设备旋转时在 VC 中修改阵列,而不会影响之前 VC 中的阵列。 所以让它成为一个复制属性。

现在我正在单独更改数组中的对象。

但不知何故..我上一个 VC 中的数组也在变化。

我必须用修改后的对象创建一个新的NSMutabelArray,并且必须设置为我的属性。

复制属性是否只是创建了另一个数组,其中添加了相同的对象引用?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    copy 属性表示属性将分配给传入的对象发送copy 消息后返回的对象。这意味着深还是浅取决于要复制的对象。 Foundation 集合创建浅拷贝,因为这允许将 copy 实现为 retain 用于不可变集合。

    【讨论】:

      【解决方案2】:

      复制属性是否只是创建了另一个数组,其中添加了相同的对象引用?

      是的,就是这样。

      this answer 中有一些关于深度复制数组的建议。也许其中一种对你有用?

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 2010-11-19
        • 2013-08-23
        相关资源
        最近更新 更多