保留前后对物体的影响复制

时间:2011-11-01 07:34:05

标签: objective-c copy retain retaincount

我有两个问题:

  1. 我有一个对象,称之为X.当我为对象X([x retain])分配保留然后更改对象X中的数据时,X的保留计数是什么?

  2. 我有两个对象,A& B.我先做这样的副本:

    B = [A copy];

  3. 现在我更改了对象A中的数据.B数据是否也会发生变化,A& A的引用数量是多少? B在数据变更之前和之后?

2 个答案:

答案 0 :(得分:1)

  1. 与更改数据之前的情况相同。

  2. 我。不,复制后您有两个独立的对象。换一个不再影响另一个。
    II。与更改数据之前的情况相同。

  3. 请查看Apple的Memory Management essay

答案 1 :(得分:0)

对于1,如果您的意思是更改x.foo = y之类的数据,则保留计数不会更改。如果你的意思是x = y,那么x的保留计数会改变为y的保留计数,因为x y。

2,

B的数据没有变化。 B的保留计数为1. A的保留计数与复制前的保留计数相同。

这是正常情况,但我认为对象可以选择从副本返回非新对象。我认为不可变的NSStrings会将自己作为副本返回,因此B的保留计数可能不是1,而A的保留计数将增加1.基本上,你不能依赖它。