美文网首页
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