OC使用copy和mutableCopy的区别

浅拷贝:

本质就是指针拷贝 -> 不会开辟新的内存空间
浅拷贝就是拷贝指向原来对象的指针,使原对象的引用计数+1,可以理解为创建了一个指向原对象的新指针而已,并没有创建一个全新的对象。

深拷贝:

本质是对象拷贝(内容拷贝) -> 会开辟一个新的内存空间
深拷贝就是拷贝出和原来仅仅是值一样,但是内存地址完全不一样的新的对象,创建后和原对象没有任何关系。

本质区别在于:

1⃣️是否开启新的内存地址
2⃣️是否影响内存地址的引用计数

浅拷贝和深拷贝区分准则:

1⃣️可变对象的copy和mutableCopy方法都是深拷贝
2⃣️不可变对象的copy方法是浅拷贝,mutableCopy方法是深拷贝
3⃣️copy方法返回的对象都是不可变对象


OC使用copy和mutableCopy的区别_第1张图片
image.png

你可能感兴趣的:(OC使用copy和mutableCopy的区别)