美文网首页
【iOS开发】复制一个对象

【iOS开发】复制一个对象

作者: Lebron_James | 来源:发表于2016-12-17 20:56 被阅读76次

我们都知道,对象之间的传递是引用传递。例如有一个Apple类,有两个Apple实例对象a和b,其中a指向redApple,把a赋值给b,即b = a,实际上b也是指向redApple。也就是说a和b都是指向同一个redApple,改变redApple的属性,a和b也会同时改变。

在开发过程中,有时候需要复制一份新的redApple,然后在赋值给b,即a和b分别指向各自的redApple,这时两个redApple各个属性值相等,只是存储的地址不一样。改变其中一个redApple的属性值,不会影响另外一个redApple。为了达到这个需求,Apple类需要实现NSCopying协议。代码演示如下:

class Apple: NSCopying {
    
    var color: String?
    
    // MARK: 实现NSCopying协议
    func copy(with zone: NSZone? = nil) -> Any {
        let apple = Apple()
        apple.color = self.color
        return apple
    }
}

然后其他类调用的时候如下:

let apple = Apple()
apple.color = "red"
let anotherApple = apple.copy(with: nil) as! Apple

这样就完成了对自定义类对象的复制。

金无足赤,人无完人。如果文中有错误,请指出!我们共同学习,共同进步。谢谢!

相关文章

  • iOS

    开发记录 iOS 深复制与浅复制 浅拷贝就是拷贝后,并没有进行真正的复制,而是复制的对象和原对象都指向同一个地址 ...

  • 【iOS开发】复制一个对象

    我们都知道,对象之间的传递是引用传递。例如有一个Apple类,有两个Apple实例对象a和b,其中a指向redAp...

  • iOS开发 对象传递复制

    开发中有这么一种情况,详情页面 detailsVc 持有 model, 需要将model传给编辑页面 editVc...

  • iOS 集合的深复制与浅复制

    iOS 集合的深复制与浅复制 概念 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是...

  • iOS:copy的本质

    基本概念 就 iOS 开发而言,关于 copy 的几个概念: 拷贝:即复制,目的是产生副本,让原对象和副本相互独立...

  • clone()之浅拷贝与深拷贝

    简述 我们在Java开发时,有时会涉及到对象拷贝复制,就是将一个对象的所有属性(成员变量)复制到另一个对象中,而拷...

  • iOS中关键字copy与mutableCopy的详解

    相信对于有一定iOS开发经验的同学来说,对于copy关键字一定不陌生,从字义上来看,应该就是复制一个对象,然后我们...

  • copy 与 mutablecopy

    相信对于有一定iOS开发经验的同学来说,对于copy关键字一定不陌生,从字义上来看,应该就是复制一个对象,然后我们...

  • iOS中关键字copy与mutableCopy的详解,看我你就都

    相信对于有一定iOS开发经验的同学来说,对于copy关键字一定不陌生,从字义上来看,应该就是复制一个对象,然后我们...

  • 开发Java这么久还不知深浅?

    实际开发场景中,你可能遇到过复制一个对象,而针对这个对象修改不应该影响被复制的对象,举个例子: 这段代码的意思是从...

网友评论

      本文标题:【iOS开发】复制一个对象

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