swift - 我可以通过分配结构体变量来创建 Swift 中自定义对象的 "copy"吗?

标签 swift struct

我有一个想要复制的自定义类,但由于各种原因将其声明为 Struct 并不好。我的问题是,如果我按照以下方式进行“复制”,我是否会得到一个全新的对象,其中每个值(字符串、整数等)完全不被任何其他值引用?说:

newObject = Object()
newObject.name = oldObject.name // This is a String
newObject.rank = oldObject.rank // This is an Int
newObject.date = oldObject.date // This is a Date
...

谢谢!

最佳答案

StringDateInt 都是结构体,在赋值时复制。它们是直接存储的,而不是通过引用间接存储的,因此您永远无法让两个 Int 指向同一个 Int(导致别名/状态共享),因为 Int 未间接引用。

我会将其包装在初始化程序或实例方法中(也许.deepCopy()?)

您必须注意的是对象(类的实例)的意外别名,这些对象被引用(复制引用,而不是它们指向的对象)。在这种情况下,您必须对所有传递引用的对象递归调用 deepCopy

关于swift - 我可以通过分配结构体变量来创建 Swift 中自定义对象的 "copy"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938244/

相关文章:

ios - 更改 Swift 中的导航栏按钮图标

ios - 无法获取 Facebook User_birthday、Swift2 中的位置

swift - 在 Swift 中,我应该编写一个单独的类来处理 UI 组件吗?

ios - 更新约束后,按钮未正确定位在自动布局中

ios - 如何在使用 Firebase Auth 创建用户期间验证字段服务器端?

c - 在 typedef 结构中填充 int 数组时出错

不能使用结构体指针作为多个函数的参数

c# - 是否可以更改原始数据类型的默认值?

c++ - 嵌套结构和在 C++ 中访问数据

go - 具有相同接收器函数实现的两个结构,如何删除重复项