不论是非集合类对象还是集合类对象:
- copy 返回的是 imutable 对象;所以,如果对 copy 返回值使用 mutable 对象接口就会 crash。
- mutableCopy 返回 mutable 对象。
对非集合类对象:
- [immutableObject copy] // 浅复制
- [immutableObject mutableCopy] // 深复制
- [mutableObject copy] // 深复制
- [mutableObject mutableCopy] // 深复制
对集合类对象:
- [immutableObject copy] // 浅复制
- [immutableObject mutableCopy] // 单层深复制
- [mutableObject copy] // 单层深复制
- [mutableObject mutableCopy] // 单层深复制
浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制。 单层深复制(one-level-deep copy):在单层深复制操作时,对于被复制对象,至少有一层是深复制。 深复制(real-deep copy):在深复制操作时,对于被复制对象的每一层都是对象复制。
更多:iOS面试题合集