OC深浅复制

 

浅复制:指针的复制

深复制:内容的复制

 

主要有两个关键字  copy 和mutablecopy

 

OC深浅复制_第1张图片

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

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

OC深浅复制_第2张图片

对于自定义对象的copy和mutableCopy

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

 

 

容器类型

OC深浅复制_第3张图片

 

 

 

总结

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

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

 

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

你可能感兴趣的:(OC深浅复制)