首页 > 技术文章 > 深浅复制

keyan1102 2020-03-04 09:43 原文

  • 1.浅复制:指针的复制
  • 2.深复制:内容的复制

主要有两个关键字 copy 和mutablecopy

1.对于基本类型 判断深浅方法

1.只要=右边从创建到赋值,至少包含一个NSMutable便会重新生成一个对象。如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。但是copy返回的对象是不可变.

2.对于自定义对象的copy和mutableCopy

首先必须遵守NSCopying,NSMutableCopying协议,不然当执行copy和mutableCopy时会崩溃!

3.容器类型

  • 总结

1.对于基本类型 copy是浅复制 mutablecopy是深复制

2.对于容器集合类型 可变不可变copy都是深复制 但是对于可变的如果 用copy的话copy过来是一个不可变的,这样会导致修改是崩溃

项目中切记勿对可变集合copy这样可能在操作新指针指向的对象时候回崩溃。

推荐阅读