【iOS开发】复制一个对象

我们都知道,对象之间的传递是引用传递。例如有一个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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 13,803评论 0 11
  • “吃饱了。”她将碗往小桌前一推,好像再嗅到那味道都起鸡皮疙瘩,时南扫了一眼还剩一半,也不管她,暗暗记着下次别买这个...
    遇鬼阅读 1,837评论 0 1
  • 打算在这里记录下自己生活的点点滴滴,记录孩子的成长,记录自己的育儿心得,记录生活本来的样子。这就是你我,这就是生活...
    图宝儿妈阅读 803评论 0 1
  • 这个世界上有许多事情,仿佛真的是命中注定一样。比如我和蒋小瑞。 记得第一次见她是在大一军训的第一天,她...
    安碧落阅读 1,607评论 0 0

友情链接更多精彩内容