Objc中为何某些类的属性要设置为copy而不是strong?
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objc中为何某些类的属性要设置为copy而不是strong?相关的知识,希望对你有一定的参考价值。
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
不知道大家是否注意,我们再使用一些第三方类的时候大多数情况下对象属性的type都是strong,但是某些类却设置成了copy类型,这是为什么?
看似很细小的改变其实是有其用意的.
copy和strong之间的区别很清楚,前者只是直接引用一个对象,而后者却是引用一个对象的拷贝.
比如如下示例:
#import <UIKit/UIKit.h>
@interface HyNameAndColorCell : UITableViewCell
@property (copy,nonatomic) NSString *name;
@property (copy,nonatomic) NSString *color;
@end
我们看到name和color字符串对象属性使用的type都是copy.
这是因为,我们再将上述2各字符串对象传递给其实例变量后,很可能会改变其内容,别忘了NSMutableString也可以传递给NSString对象(但是反过来却不可以,不明白的自行度娘类和子类对象的赋值).
如果属性的type设置为copy,那么不管原有对象如何更改都不会影响HyNameAndColorCell实例变量的值了.That’s Why!
以上是关于Objc中为何某些类的属性要设置为copy而不是strong?的主要内容,如果未能解决你的问题,请参考以下文章