浅谈深浅拷贝

作者: 蜡笔小强 | 来源:发表于2016-11-29 14:57 被阅读18次

在进行iOS开发时候,深拷贝很多人不经常用,但是有时候出了bug,追查很久,才发现是深浅拷贝的问题,往往浪费很多时间。

场景:

假设在即时通讯发消息,下载东西时候,对文件进行model定义后,多层传参。在某一层方法的时候,这个model改变了里面的值比如isDownload=YES;然后最外层方法还需要isDownload原来的状态,没有理解深浅拷贝就会犯错。

深拷贝同浅拷贝的区别:

浅拷贝是指针拷贝,对一个对象进行浅拷贝,相当于对指向对象的指针进行复制,产生一个新的指向这个对象的指针,那么就是有两个指针指向同一个对象,这个对象销毁后两个指针都应该置空。深拷贝是对一个对象进行拷贝,相当于对对象进行复制,产生一个新的对象,那么就有两个指针分别 指向两个对象。当一个对象改变或者被销毁后拷贝出来的新的对象不受影响。

实现深拷贝,需要实现NSCoying协议,实现- (id)copyWithZone:(NSZone *)zone方法。如果父类实现了这个方法,子类重写时候不要忘记调用父类方法,再加上自己逻辑。父类没有实现的话,子类实现的时候要对父类也进行处理一下。

相关文章

  • 浅谈深浅拷贝

    在进行iOS开发时候,深拷贝很多人不经常用,但是有时候出了bug,追查很久,才发现是深浅拷贝的问题,往往浪费很多时...

  • 浅谈javascript的深浅拷贝

    最近遇到了不少深浅拷贝的问题,自己也查阅了不少资料,在这里总结一下,也希望能帮助到更多有需要的小伙伴~ 基本数据类...

  • 2018-08-29

    深浅拷贝 1.根据拷贝内容的不同,分为深浅拷贝 深拷贝:内容...

  • js的深浅拷贝

    js的深浅拷贝可以分为数组的深浅拷贝和对象的深浅拷贝 一、数组的深浅拷贝如果只是简单的将数组中的元素付给另外一个数...

  • Python—浅拷贝与深拷贝

    浅拷贝 深拷贝 深浅拷贝的作用

  • 深浅拷贝

    先来了解一下这些:在js中变量类型基本分为两种:基本数据类型和引用数据类型;基本类型:Underfied Null...

  • 深浅拷贝

    浅拷贝是对一个对象的顶层拷贝。通俗的理解就是:拷贝了引用,并没有拷贝内容。 深拷贝是对于一个对象所有层次的拷贝(递...

  • 深浅拷贝

    深浅拷贝.copy 浅拷贝 这是一个方法,浅拷贝修改可变类型是会将原数据也一块修改 Copy.deepcopy 深...

  • 深浅拷贝

    1:is 和 ==的区别 is 是比较两个引用是否指向了同一个对象(地址引用比较)。== 是比较两个对象是否相等。...

  • 深浅拷贝

    函数的传递,与matlab不同,具有以下特点: 1.直接赋值会带来不同ID,例如,a=2,b=2 2.传递引用赋值...

网友评论

    本文标题:浅谈深浅拷贝

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