浅拷贝
只拷贝引用(指针)不拷贝对象空间【不会创建新的对象空间,会使对象计数器加1】
深拷贝
不拷贝引用,拷贝的是整个对象空间,拷贝时会创建新的对象空间,空间内容和原来对象的内容一模一样
官方的类可以进行拷贝:
NSString NSMutableString
NSArray NSMutableArray
NSDictionary NSMutableDictionary
NSSet NSMutableSet
NSData NSMutableData
copy 、Mutablecopy
拷贝对象的时候需要调用copy或者mutableCopy方法
在执行copy和Mutablecopy这2个方法的时候,对象所属的类必须要遵守NScopying和NSMutablecopying协议里面的copyWithZone:或者MutablecopyWithZone:方法
上述官方的类,系统已经遵守协议实现了方法,我们可以直接调用copy或者mutableCopy
如果是自定义的类,必须要遵守NScopying和NSMutablecopying协议实现copyWithZone:或者MutablecopyWithZone:方法
对于系统的类
copy是把一个对象拷贝成不可变对象
mutableCopy把一个对象拷贝成可变对象
对于自定义的类或者系统的其他类,是没有可变和不可变之说的,这时copy和mutableCopy的功能是一样的