美文网首页
为什么NSString大多数情况下建议用copy修饰

为什么NSString大多数情况下建议用copy修饰

作者: 梦游天际 | 来源:发表于2018-01-31 17:55 被阅读0次

    看过一些NSString建议用copy和strong修饰的文章,很多时候的解释都是讲深拷贝,浅拷贝的问题,然后就是如下结论:一般我们将对象声明为NSString时,都不希望它改变,所以大多数情况下,我们建议用copy,以免因可变字符串的修改导致的一些非预期问题。一直没有特别理解是怎么回事,闲来无事自己动手写了一个demo来模拟一些需求来验证上述内容。


    屏幕快照 2018-01-31 下午5.40.53.png

    先创建一个Person类,分别用Copy和String修饰两个属性。


    屏幕快照 2018-01-31 下午5.44.49.png
    分别赋值和打印地址如下结果
    屏幕快照 2018-01-31 下午5.44.59.png

    我们发现secondName并没有copy出新对象,跟用strong修饰没有任务区别,都是所谓的浅拷贝,然后我又试了个用可变字符串去赋值,中途又修改的可变字符串。


    屏幕快照 2018-01-31 下午5.41.35.png
    打印结果如下:
    屏幕快照 2018-01-31 下午5.41.44.png
    效果就出来了。用copy修饰的属性copy了一个新的对象,而strong没有,结果也显而易见,也应证了结论:一般我们将对象声明为NSString时,都不希望它改变,所以大多数情况下,我们建议用copy,以免因可变字符串的修改导致的一些非预期问题。

    相关文章

      网友评论

          本文标题:为什么NSString大多数情况下建议用copy修饰

          本文链接:https://www.haomeiwen.com/subject/ykslzxtx.html