我有两个问题:
我有一个对象,称之为X.当我为对象X([x retain]
)分配保留然后更改对象X中的数据时,X的保留计数是什么?
我有两个对象,A& B.我先做这样的副本:
B = [A copy];
现在我更改了对象A中的数据.B数据是否也会发生变化,A& A的引用数量是多少? B在数据变更之前和之后?
答案 0 :(得分:1)
与更改数据之前的情况相同。
我。不,复制后您有两个独立的对象。换一个不再影响另一个。
II。与更改数据之前的情况相同。
请查看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.基本上,你不能依赖它。