基本概念
浅拷贝:地址拷贝,两个对象指向同一地址。
深拷贝:对象拷贝,两个对象指向不同地址。
copy & mutableCopy
copy | mutableCopy | |
---|---|---|
不可变对象 | 浅拷贝 不可变 | 深拷贝 可变 |
可变对象 | 深拷贝 不可变 | 深拷贝 可变 |
总结:
- 用copy后都是不可变的,用mutableCopy后都是可变的。
- 用mutableCopy都是深拷贝。
- 区别: 不可变对象copy是浅拷贝,可变对象copy后是深拷贝。
Property用copy修饰
Property用copy修饰是一次深拷贝
不可变用copy修饰,相当于做一次备份,不会在其或子类中被修改。
可变对象一般不推荐copy修饰,copy后会变成不可变,使用可变方法会抛异常。