iOS 集合类和非集合类的copy和mutableCopy

集合类:(以数组为例)

NSMutableArray NSArray
copy:新地址 copy:同样地址
mutablecopy:新地址 mutablecopy:新地址
不论哪种数组内部的元素地址都是一份 不论哪种数组内部的元素地址都是一份

非集合类:(字符串为例)

NSMutableString NSString
copy:新对象 copy:同样地址
mutablecopy:新对象 mutablecopy:新对象

能实现真正意义上的深复制目前所知道的只能是归档后再解档(非自定义模型); [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:arr]]


源对象类型 拷贝方式 目标对象类型 拷贝类型(深/浅)
mutable对象 copy 不可变 深拷贝
mutable对象 mutablecopy 可变 深拷贝
immutable对象 copy 不可变 浅拷贝
immutable对象 mutablecopy 可变 深拷贝

可变对象的copy和mutablecopy都是深拷贝
不可变对象的copy是浅拷贝, mutablecopy是深拷贝;
copy方法返回的都是不可变对象;

你可能感兴趣的:(iOS 集合类和非集合类的copy和mutableCopy)