浅拷贝, 深拷贝, copy, retain 的用法
1.浅拷贝只复制对象的本身,对象里的属性, 包含的对象并不做复制
2.深拷贝复制对象本身, 对象中的属性也会复制一份
自定义对象实现拷贝
1.实现了NSCopying或者NSMutableCopying协议.
2.NSCopying协议需要实现 : - (id) copyWithZone:(NSZone *)zone 方法.
3.NSMutableCopying协议需要实现 : - (id) mutableCopyWithZone:(NSZone *)zone 方法.
copy , mutableCopy 和 retain 之间的关系
1.当我们copy一个不可变的对象时, 他的作用相当于retain (cocoa做的内存优化),堆内存并没有实现复制, 只是引用系数加1.
2.当使用mutableCopy复制一个对象时, 不管源对象是否可变, 都会实现对象真正的copy,既堆内存复制了一份.
3.当源对象时可变的, 使用copy和mutableCopy都会实现对象真正的copy.