What is difference between strong and copy?
目标C中的强拷贝和拷贝有什么区别?我应该用哪一个?
我知道copy可以防止实例变量的值在使用可变字符串进行设置时发生更改,该字符串稍后会自行更改。还有别的吗?
- "我应该用哪一个?"这取决于你的需要。有时,您需要确保类有自己的副本,或者它不能被变异,其中copy是正确的。有时你不在乎也真的想要一个strong引用到其他对象。strong和copy都有各自适当的情况。问一个关于特定场景的问题,我们可以帮助你(如果在阅读乔希提到你的文章之后还不明显的话)。
strong增加对象的保留计数器1。
copy使用retain计数器1创建对象的副本。
如果使用ARC,则无法访问保留计数器,但方法与MRC相同。
- 这不适合复制。
- 什么是错误的?
- 不可变对象(如nsstring)的copy只会增加保留计数。可变对象的copy生成保留计数为1的不可变副本。这是不可变对象的属性。
- 谢谢。不知道。
- 这就是为什么copy被推荐用于NSString和NSNumber的原因,它只复制了可变到不可变的。