项目介绍:
复制集合时,该集合、集合内元素的可变性可能会受到影响。每种方法对任意深度集合中对象的可变性有稍微不同的影响。
-
copyWithZone:创建对象的最外层 surface level不可变,所有更深层次对象的可变性不变。
-
mutableCopyWithZone:创建对象的最外层 surface level可变,所有更深层次对象的可变性不变。
-
initWithArray: copyItems:第二个参数为NO,此时,所创建数组最外层可变性与初始化的可变性相同,所有更深层级对象可变性不变。
-
initWithArray: copyItems:第二个参数为YES,此时,所创建数组最外层可变性与初始化的可变性相同,下一层级是不可变的,所有更深层级对象可变性不变。
-
归档、解档复制的集合,所有层级的可变性与原始对象相同。
源码地址:https://github.com/pro648/BasicDemos-iOS/tree/master/copy%26mutableCopy
详细介绍:https://github.com/pro648/tips/wiki/深复制、浅复制、copy、mutableCopy