NSString为什么用copy

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


开发


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

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

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

strong修饰string值变


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

我仔细思考后

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容