assign 是用来修饰基础的数据类型(NSInteger)和C语言的数据类型(int、float、char等)引用计数不加1;
copy 是用来修饰NSString对象,本质上是建立了一个索引计数为1的对象,是指针拷贝,
ps:好了,我也不装X了,面试的时候最烦问到的问题就是这种内存问题,一问真的问死人的,我都有点想要回简历拍拍屁股走人的冲动。
这个问题是这样的,网上我也查阅资料了,但是还是不理解,我这篇文章就专门把这个疑惑我很久的问题给大家说一下,如果有大神的话,给我解释一下这个问题吧~我不装X了。
如果把Copy单独拿出来和其他的retain、assign、strong等等做比较的话,网上也有很多,简单的说都这样:Copy会重新生成一个string对象,当改变这个对象的时候,原有对象不会进行改变。
但是,当Copy 和MutableCopy 进行比较的时候,也就是面试常问到的深拷贝和浅拷贝的区别,这个时候Copy 是指针拷贝,即两个指针指向同一内存地址,而MutableCopy是内存拷贝,这样的话,改变MutableCopy的对象对原有对象并不会造成改变。
这两种情况下,Copy是不一样的,这是为什么呢?好矛盾。