浅拷贝:只是拷贝对象本身,而其内的属性,所包含的对象不会拷贝。
深拷贝:不仅拷贝本身,所包含的属性和对象也会拷贝
Foundation框架内默认是浅拷贝
浅拷贝其实是指针拷贝,而深拷贝才是对象拷贝
1:非容器类型
NSString ,NSSNumbel
对于不可变对象
copy是浅拷贝(指针拷贝),mutabCopy是深拷贝,但对于可变对象,都是深拷贝,只是copy返回对象是不可变的
2:容器类型
NSDictionary,NSSArray
对于不可变对象 copy是浅拷贝(指针拷贝),mutabCopy是深拷贝,但对于可变对象,都是深拷贝,只是copy返回对象是不可变的,但是容器内的元素内容实现都是浅拷贝
copy和mutabCopy区别,前者返回一个不可变对象,后者返回一个可变对象。
3:当使用copy拷贝一个对象时候,那么此时相当于retain,因为如果创建一个副本,那么没有任何意义,浪费内存。
4:当使用mutabCopy时候,无论对象是可变的还是不可变的,都是实现真正意义上的拷贝。
5:当对象是可变的时候,使用copy和mutabCopy都是深拷贝,创建副本。
总之,当对象时不可变的,使用copy进行拷贝,是指针拷贝,即浅拷贝,其它情况下,是深拷贝。