oc中的copy分为深copy和浅copy
深copy的意思是copy后又重新开辟一个内存空间,对copy的资源进行操作,不会影响本来的那份资源。表格中显示哪些为深copy
copy前的可变性 | 可变 | 不可变 |
进行copy | 不可变 | 不可变 |
进行mutablecopy | 可变 | 可变 |
以上四中情况下,除了开始是不可变,进行copy后,还是不可变的,这种情况下是浅copy外,其他的三种情况都是深copy。
进行copy操作的,除了系统的NSArray/NSMuabltArray、NSDictionary/NSMuableArray,对其他自定义的类,也可以进行copy操作
自定义的类进行copy操作的时候,需要以下的步骤
1.定义类时,遵守<NSCopying>协议
2.实现(copyWithZone:...)的方法
3.如果是MRC情况下,需要在重写系统的一些方法,如-release,-retain,-autorelease,- retainCount。如果ARC情况下,是不用写这些方法的
原文:http://www.cnblogs.com/yanyuewen/p/3985913.html