OC设计Copy语法的目的就是:由源文件产生一个新的副本,修改副本的时候不会影响源文件。
copy语法并没有产生一个新的对象,而是返回原来的对象,copy相当于retain. 计数器加一
copy or mutable copy都要记得release (类似于alloc new)
深拷贝 真正的拷贝 把内容拷贝一份
深拷贝:
浅拷贝:纯粹指针拷贝
只有不可变 变 不可变 才是浅拷贝。
可变 拷贝为不可变也是深拷贝,虽然用copy方法,如下 深拷贝:
一个可变一个不可变,结构都不一样,因此是深拷贝。
可变拷贝可变的,肯定是深拷贝,copy的目的是修改副本不影响源文件。都是可变的了,更不能影响对方。
只有不可变调用copy的情况是浅拷贝,其它都是深拷贝。
=======自己写的对象进行copy/mutablecopy时========================================
首先之前@propety中参数retain的作用是,检查传进来的对象是否与原来对象是否相同,如果不同释放原来的重新retain一下,并赋值给本地变量;如下图:
如果这里写copy参数的话:
-----------------------------------------------------
这种改变(copy)是两个对象,不会影响彼此的:
如果改成retain策略:
就会导致里面对象也会被改,即二者是一个对象。
上面是字符串copy,下面进行用户自定义对象的student copy
静态方法不能访问成员变量。
需要把这个视频教程的最后二十分钟的内容再仔细看一遍!!!!
6 8.OC18-copy语法.mp4