數組是值類型,因此它複製數據。參考類型的數組
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
請任何人解釋,爲什麼?
數組是值類型,因此它複製數據。參考類型的數組
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
請任何人解釋,爲什麼?
在Swift中,Array是一個值類型 - 所以arrayOne的結果將被複制到arrayTwo。但是,UIView是一個引用類型,因此引用被複制。引用仍指向原來的UIView,這就是你看到這種行爲的原因。
數組是Swift中的值類型,但仍然是,您的項目是引用類型含義:兩個數組都保存引用值,這些值相同。在你的例子中,你有兩個內存地址作爲兩個不同的值存儲在堆棧中,但是兩個值都是相同的,並且這兩個值都指向同一個對象。
數組是應用程序中最常用的數據類型之一。
基本上,你的陣列收集的類型是引用,你是指派的UIView
引用另一個數組,如果你想改變的參考,所以你要做的deep copy的參考值將是相同的。
*數組是參考類型* - 不,它不是 –
謝謝我做了更正。 – bhavesh