iOS面试题:怎么理解浅拷贝与深拷贝?

不论是非集合类对象还是集合类对象:

  • 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面试题合集

你可能感兴趣的:(iOS面试题:怎么理解浅拷贝与深拷贝?)