最近在准备面试!这个问题被问的很多!自己花了一点时间,把demo敲了一遍,顺便看看问题的到底在那。话不多上代码和图片
这边我们用NSMutableString分别给用copy 和 strong 修饰的NSString进行赋值,答应结果告诉我们用strong修饰的string 的内存地址和NSMutableString的内存地址一样,而用copy是开辟的一个新的空间
当我们再次修改了NSMutableString的时候我们strong修饰的值发生了变化!违背NSString的不可性。
如果你想让strong修饰的string不会发变化的话可以参考下面的做法
这样通过Xcode跑出来的结果我们对NSMutableString进行一次copy操作!我们可以发现无论是用copy还是用strong 的值都没有发生变化。而是都指向一块新的空间。
我仔细思考后
1.这里面还有深拷贝还有浅拷贝,上面结果告诉我们copy是深拷贝,在内存中开辟了空间
2.系统对内存的分配情况。