我正在尝试复制数组及其值。为什么两个数组都引用同一个变量?您可以在 Playground 中尝试此操作。
var view = UIView()
view.tag = 1
var a = [UIView]()
var b = [UIView]()
a.append(view)
b = a
view.tag = 2
a[0].tag // value is 2
b[0].tag // value is 2?
Run Code Online (Sandbox Code Playgroud)
由于 Swift 中的 Array 是值类型,因此当您复制时,它将创建一个单独的副本。但由于 UIView 是引用类型并且您的数组包含 UIView,因此在复制时它们指向相同的内存位置或相同的引用。您的数组a,b即使两个单独的数组 和 各自包含一个对象,它们也会指向相同的位置。当您将标签编号指定为 2 时,它只是覆盖该内存位置(参考)的旧编号。
| 归档时间: |
|
| 查看次数: |
2136 次 |
| 最近记录: |