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!

上一篇:block要用copy修饰,还是用strong


下一篇:NSString copy or not (strong)?