如何在附加项目后保留对数组的引用?
更新了代码示例,因为之前的示例似乎不够清晰。
class ViewController: UIViewController {
var numbers = Numbers.singleton.numbers
override func viewDidLoad() {
print(numbers.count)
Numbers.singleton.add(1)
print(numbers.count) // prints 0
print(Numbers.singleton.numbers.count) // prints 1
}
}
class Numbers {
static let singleton = Numbers()
var numbers: [Int]!
private init() {
numbers = []
}
func add(number: Int) {
numbers.append(number)
}
}
最佳答案
Swift 中的数组没有“引用”。它们是结构,结构是 value type .您的(错误命名的)arrayRef
是一个单独的副本,而不是对self.array
的引用。
此外,没有充分的理由想要做您(似乎)想做的事情。对可变数组同时进行两个引用是不安全的,因为数组可以在您背后更改。 Swift 的设计是明智的;使用它,不要颠覆它。
关于ios - 如何在操作后保留对数组的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348845/