NSString为什么用copy

最近在准备面试!这个问题被问的很多!自己花了一点时间,把demo敲了一遍,顺便看看问题的到底在那。话不多上代码和图片


NSString为什么用copy_第1张图片
开发


这边我们用NSMutableString分别给用copy 和 strong 修饰的NSString进行赋值,答应结果告诉我们用strong修饰的string 的内存地址和NSMutableString的内存地址一样,而用copy是开辟的一个新的空间

当我们再次修改了NSMutableString的时候我们strong修饰的值发生了变化!违背NSString的不可性。

如果你想让strong修饰的string不会发变化的话可以参考下面的做法

NSString为什么用copy_第2张图片
strong修饰string值变


这样通过Xcode跑出来的结果我们对NSMutableString进行一次copy操作!我们可以发现无论是用copy还是用strong 的值都没有发生变化。而是都指向一块新的空间。

我仔细思考后

1.这里面还有深拷贝还有浅拷贝,上面结果告诉我们copy是深拷贝,在内存中开辟了空间

2.系统对内存的分配情况。

你可能感兴趣的:(NSString为什么用copy)