美文网首页
Copy & MutableCopy

Copy & MutableCopy

作者: FH_iOS | 来源:发表于2018-05-22 15:14 被阅读0次

            1.在声明 不可变对象的时候,要使用 Copy,而不是Strong。

    二:

            1.不可变对象 copy 生成不可变对象,拷贝方式为浅拷贝。 执行 mutableCopy 生成可变对象,拷贝方式为深拷贝

            2.可变对象 copy 生成不可变对象,拷贝方式为深拷贝。 执行 mutableCopy 生成可变对象,拷贝方式为深拷贝。

    三:

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

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

    四:

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

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

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

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

    引用链接:http://www.code4app.com/thread-29639-1-5.html(侵删)

    相关文章

      网友评论

          本文标题:Copy & MutableCopy

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