转自:http://www.tongwenguan.com/
接下来 我们 要讨论 关于复制物件的微妙之处。我们 要引入 浅层复制 VS 深层复制的概念 以及 讨论 如何复制 基础框架中的物件。
在讨论 继承的时候,我们 讨论过 如果用 等号 连接 一个物件 和 一个变量 会发生 什么,就像 这样:
在这行语句当中 origin 和 point 都是 XYPoint类型的物件,这类物件 是 这样的:
用 等号 连接 origin 和 point的结果 就是 将 物件point的地址 存储 在变量origin当中。于是 origin 和 point这两个变量 都存储着 同一个物件的地址。如果 我 对物件point 采取 setX:andY:这项措施 设定 其所代表的坐标系中的位置,就像 这样:
那么 物件origin所代表的坐标系中的位置 也改变了,因为 point 和 origin当中 存储着 同一个内存地址。
上面所讨论的 同样 适用于 基础框架中的物件:用 等号 连接 一个变量 和 一个物件 只会将 这个物件的地址 存储 在这个变量中,但是 这个物件的引用次数 并不会增加。如果 我们 执行 这行语句:
那么 接下来的这行语句:
同样 会把 数组物件dataArray中第0个物件 移除。