美文网首页
iOS 深拷贝和浅拷贝

iOS 深拷贝和浅拷贝

作者: HeartPower | 来源:发表于2018-05-08 10:26 被阅读24次

浅拷贝:将对象的内存地址进行拷贝,不会生成一份新的内存地址。其生成对象与原有对象会公用同一份内存地址 但是它不会改变引用计数器 只会让此内存保持原有引用计数,其所指向的内容是一致的。

深拷贝:将对象的内存地址所指向内容进行拷贝,生成一份新的内存地址指向这份拷贝出来的内容。其生成对象与原有对象分别使用不同的地址,所指向的内容也不一致,其所指向的内容应该是拷贝出来的另一份全新内容。

strong: 在 set 方法中 ARC 系统会自动帮我们加入对 新值 retain 使其引用计数器 + 1 的代码, 并且对旧 值进行 release 使其引用计数器 - 1 的代码。

copy: 在 set 方法中 ARC 系统会自动帮我们加入对 新值 copy 的代码。引用计数器不变。

weak: 在 set 方法中 ARC 系统不会调用 引用计数器相关的 代码执行, 只是简单的赋值而已,所以其引用计数器不会改变。其为OC对象。

assign:在 set 方法中 ARC 系统不会调用 引用计数器相关的 代码执行, 只是简单的赋值而已,计数器不会改变。其为非OC对象。

下面用两张图来总结下:


1.png
2.png

相关文章

网友评论

      本文标题:iOS 深拷贝和浅拷贝

      本文链接:https://www.haomeiwen.com/subject/ahsirftx.html