在ios开发当中,经常涉及到的一个问题就是深拷贝和浅拷贝的问题,这个问题之前我一直都认为非常简单,无非就是个指针地址是否相同的问题。但是在实际开发的时候,发现,问题的本质确实是地址相同,就是浅拷贝,地址不同就是深拷贝。


但是有哪些对象,哪些方法实现了深拷贝和浅拷贝哪?

回答这些问题,就要看如下内容了。

ios开发过程中,大体上会区分为对象和容器两个概念,对象的copy是浅拷贝,mutablecopy是深拷贝。容器也参照如上方法,但是需要记住,容器的包含对象的拷贝,无论使用copy,还是mutablecopy都将是浅拷贝。要想实现对象的深拷贝,必须自己提供拷贝的方法。


另外,需要记住一点,就是说,并不是说所有的对象都支持copy、和 mutablecopy方法,必须支持 NSCODING , NSMUTALBECOPYING协议,才可以。通常这个部分对于自定义对象而言,是要自行编写的。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐