带引用类型的数组

时间:2017-09-12 08:15:13

标签: ios swift

数组是值类型,因此它会复制数据。

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请有人解释原因吗?

3 个答案:

答案 0 :(得分:5)

在Swift中,Array是一个值类型 - 因此arrayOne的结果将被复制到arrayTwo。但是,UIView是引用类型,因此复制了引用。引用仍然指向原始的UIView,这就是你看到这种行为的原因。

答案 1 :(得分:1)

数组是Swift中的值类型,但是,您的项目仍然是引用类型:两个数组都包含引用值,并且这些值是相同的。在您的示例中,您有两个存储器地址存储为堆栈上的两个不同值,但两个值都相同,并且两个值都指向同一个对象。

答案 2 :(得分:1)

  

数组是应用程序中最常用的数据类型之一。

基本上,数组集合的类型是引用,您将UIView的引用分配给另一个数组,如果要更改引用,引用将是相同的,因此您必须执行{{ 3}}