2017-09-12 167 views
-2

數組是值類型,因此它複製數據。參考類型的數組

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請任何人解釋,爲什麼?

+2

*數組是參考類型* - 不,它不是 –

+0

謝謝我做了更正。 – bhavesh

回答

6

在Swift中,Array是一個值類型 - 所以arrayOne的結果將被複制到arrayTwo。但是,UIView是一個引用類型,因此引用被複制。引用仍指向原來的UIView,這就是你看到這種行爲的原因。

1

數組是Swift中的值類型,但仍然是,您的項目是引用類型含義:兩個數組都保存引用值,這些值相同。在你的例子中,你有兩個內存地址作爲兩個不同的值存儲在堆棧中,但是兩個值都是相同的,並且這兩個值都指向同一個對象。

1

數組是應用程序中最常用的數據類型之一。

基本上,你的陣列收集的類型是引用,你是指派的UIView引用另一個數組,如果你想改變的參考,所以你要做的deep copy的參考值將是相同的。