【发布时间】:2020-09-25 09:49:20
【问题描述】:
我想确保如果更新原始变量,实例属性也会更新。
class Sample {
var number: Int
init(number: inout Int) {
self.number = number
}
}
var number = 0
let sample = Sample(number: &number)
number = 1
print(sample.number) // 0
在上面的代码中,实例属性没有更新。
我该如何解决?
【问题讨论】:
-
一个
inout函数参数有一个值被传入函数,被函数修改,并被传回函数外以替换原始值。它不会为传递给函数的变量创建某种永久绑定。Int是一个值类型。您可以尝试使用NSNumber代替,它是一个类,因此是一个引用类型。 -
Swift中的值类型和引用类型stackoverflow.com/questions/44195908/…
-
如何在 Swift 中获取值类型的引用? stackoverflow.com/questions/42138449/…