数组是值类型,因此它会复制数据。
var arrayOne = [UIView(), UIView()]
var arrayTwo = arrayOne
arrayOne.first!.alpha = 0.5
arrayTwo.first!.alpha // How this becomes 0.5?
但arrayTwo.first!.alpha
打印0.5
而非1
请有人解释原因吗?
答案 0 :(得分:5)
在Swift中,Array是一个值类型 - 因此arrayOne的结果将被复制到arrayTwo。但是,UIView是引用类型,因此复制了引用。引用仍然指向原始的UIView,这就是你看到这种行为的原因。
答案 1 :(得分:1)
数组是Swift中的值类型,但是,您的项目仍然是引用类型:两个数组都包含引用值,并且这些值是相同的。在您的示例中,您有两个存储器地址存储为堆栈上的两个不同值,但两个值都相同,并且两个值都指向同一个对象。
答案 2 :(得分:1)
数组是应用程序中最常用的数据类型之一。
基本上,数组集合的类型是引用,您将UIView
的引用分配给另一个数组,如果要更改引用,引用将是相同的,因此您必须执行{{ 3}}