深拷贝与浅拷贝

什么是浅拷贝、深拷贝?

简单理解就是,浅拷贝是拷贝了指向对象的指针, 深拷贝不但拷贝了对象的指针,还在系统中再分配一块内存,存放拷贝对象的内容

如何判断浅拷贝、深拷贝?

深浅拷贝取决于拷贝后的对象的是不是和被拷贝对象的地址相同,如果不同,则产生了新的对象,则执行的是深拷贝,如果相同,则只是指针拷贝,相当于retain一次原对象, 执行的是浅拷贝.

mutableCopy返回的是可变对象,copy返回的是不可变对象。

把一个对象赋值给一个属性变量,当这个对象变化了,如果希望属性变量变化就使用strong属性,如果希望属性变量不跟着变化,就是用copy属性。一般情况下,我们都不希望字串的值跟着NSMutableString变化,所以我们一般用copy来设置string的属性。