保留和复制之间的区别?

问题描述:

保留和复制之间的区别究竟是什么?对参考计数有什么意义?保留和复制之间的区别?

我知道,当一个对象被使用分配分配/保留,引用计数由一个上升。 那么如何使用副本?

与此相关的另一个问题是,使用
@property(nonatomic,retain)和@property(nonatomic,copy)之间的区别?

+0

increate原始对象的引用计数您还没有接受任何的答案。你应该选择一个。 :) – Jiraheta 2013-11-07 20:15:31

挽留 - 在创建的对象上完成的,它只是增加了引用计数。

副本 - 创建一个新的对象

+1

副本也增加再培训计数 – rithik 2011-03-22 14:12:39

回答你的问题,以我的知识。首先,保留和复制之间的区别究竟是什么?对参考计数有什么意义?

保留 - “指定保留应当在分配对象上调用......以前的值发送释放消息。”所以你可以想象分配一个NSString实例(这是一个对象,你可能想保留)。所以保留计数由1

副本上升 - “指定对象的副本应该用于分配......以前的值发送释放消息。”基本上与保留相同,但发送 - 复制而不是 - 保留。如果我没记错,计数也会增加1。

好吧,现在进入更多的细节。

物业属性是特殊的关键字来告诉编译器如何生成getter和setter。在这里指定两个属性:nonatomic,它告诉编译器不要担心多线程,并保留,这会告诉编译器在设置实例变量之前保留传入的变量。

在其他情况下,你可能需要使用“分配”财产属性,而不是保留,它告诉编译器不要!保留传入的变量。或者也许是“复制”属性,它在设置之前复制了传入的变量。

我希望有帮助。我在这里发现了另一篇文章,可能也会帮助你。

Objective C - Assign, Copy, Retain

干杯! 圣何塞

一般来说,copy创建具有与原始对象相同的值的新的对象,并且将新创建的对象,以1中的参考计数(顺便说,原始对象的引用计数是不受影响)。

然而,copy相当于retain不可变对象,这只是1