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
本文深入探讨了Objective-C中的Copy语法,解释了其作用、与Retain的区别,以及如何正确使用Copy与MutableCopy。重点阐述了Copy与MutableCopy在不同情况下的行为差异,并通过实例说明了深拷贝与浅拷贝的概念。此外,文章还详细分析了自定义对象进行Copy或MutableCopy时的策略选择与注意事项。

927

被折叠的 条评论
为什么被折叠?



