保留和复制之间的区别?
问题描述:
保留和复制之间的区别究竟是什么?对参考计数有什么意义?保留和复制之间的区别?
我知道,当一个对象被使用分配分配/保留,引用计数由一个上升。 那么如何使用副本?
与此相关的另一个问题是,使用
@property(nonatomic,retain)和@property(nonatomic,copy)之间的区别?
答
回答你的问题,以我的知识。首先,保留和复制之间的区别究竟是什么?对参考计数有什么意义?
保留 - “指定保留应当在分配对象上调用......以前的值发送释放消息。”所以你可以想象分配一个NSString实例(这是一个对象,你可能想保留)。所以保留计数由1
副本上升 - “指定对象的副本应该用于分配......以前的值发送释放消息。”基本上与保留相同,但发送 - 复制而不是 - 保留。如果我没记错,计数也会增加1。
好吧,现在进入更多的细节。
物业属性是特殊的关键字来告诉编译器如何生成getter和setter。在这里指定两个属性:nonatomic,它告诉编译器不要担心多线程,并保留,这会告诉编译器在设置实例变量之前保留传入的变量。
在其他情况下,你可能需要使用“分配”财产属性,而不是保留,它告诉编译器不要!保留传入的变量。或者也许是“复制”属性,它在设置之前复制了传入的变量。
我希望有帮助。我在这里发现了另一篇文章,可能也会帮助你。
Objective C - Assign, Copy, Retain
干杯! 圣何塞
答
一般来说,copy
创建具有与原始对象相同的值的新的对象,并且将新创建的对象,以1中的参考计数(顺便说,原始对象的引用计数是不受影响)。
然而,copy
相当于retain
不可变对象,这只是1
increate原始对象的引用计数您还没有接受任何的答案。你应该选择一个。 :) – Jiraheta 2013-11-07 20:15:31