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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值