不能说retain是浅拷贝,
因为浅拷贝被的定义是:指针拷贝,源文件和新文件指向的是同一个地址,也就是说浅拷贝要复出出来一个新的文件,但两个文件的地址还是一个。浅拷贝的话是只有不可变数组(如:NSArray,NSSet,NS字典)遇上copy,才是浅拷贝,剩下的都是深拷贝。
深拷贝的定义是:内容复制,也就是还是要复制出来一个新的对象,但新对象和原来对象的地址是两个完全没有关系的地址。改变新对象,旧对象就不会改变。改变旧对象新对象就不会改变。他的引用计数器是旧对象不变,新对象的retainCount + 1 .
而 retain 他只是让引用计数器加1 。 并没有让旧对象复制出来一个新的对象。 |