【发布时间】:2017-06-08 08:42:22
【问题描述】:
我将自定义类的值分配给另一个变量。更新新变量的值会影响原始变量的值。但是,我需要阻止引用变量更新原始变量。
这是正在发生的事情的基本表示:
var originalVariable = CustomClass()
originalVariable.myProperty = originalValue
var referenceVariable = originalVariable
referenceVariable.myProperty = updatedValue
print("\(originalVariable.myProperty)") //this prints the ->updatedValue<- and not the ->originalValue<-
我尝试将 referenceVariable 包装在一个结构中以使其成为值类型,但它并没有解决问题。
我找到了有关值和引用类型的信息,但我找不到解决方案。
简而言之我的问题:如何停止对引用变量的更新,使其不再更新从其获得其值的原始变量?
提前致谢。
【问题讨论】:
-
不使用自定义类的类,你能把它变成一个结构吗?问题是一个类是一个引用,当你做 var reference = originalVariable 你只是创建一个对 originalVariable 的引用而不是一个副本。
-
这就是使类成为类的原因,如果您不希望使用此指针功能,请改用 Struct
-
感谢您的回复。我尝试将 CustomClass 更改为结构,这已经解决了这个问题。我曾尝试将引用变量放在一个结构中,但是,这并没有奏效。我尝试使用 NSObject 方法,但似乎无法在 CustomClasses 数组上调用复制方法,因此它不适用于我正在处理的项目。但是,我认为还有其他方法可以复制数组。干杯。
标签: swift swift-structs pass-by-reference-value