用 @property 声明的 NSString (或 NSArray,NSDictionary) 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?

因为父类指针可以指向子类对象,使用copy目的是为了让本对象的属性不受外界的影响,使用copy无论是给我传入一个可变对象还是不可变对象,我本身持有的都是一个不可变的副本。
如果我们使用的是strong 的话,那么这个属性如果指向一个可变对象,可变对象在外部被修改的时候,会影响本身的属性。

copy 所表达的所属关系与strong 类似,但是copy设置方法并不保留新值。当属性为NSString 时,因为传递给设置方法的新值有可能指向一个NSMutableString 类的实例。这个类是 NSString 的子类,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知道的情况下被更改。

你可能感兴趣的:(用 @property 声明的 NSString (或 NSArray,NSDictionary) 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?)