Bir sınıf özniteliğinin içinde hızlı bir yapıya sahip ve struct nesnesini kopyaladığımda, kopyalanan veya referans olarak geçirilen sınıf özniteliği mi?Yapı içindeki hızlı sınıflar, ödev sırasında kopya ile mi iletilir?
5
A
cevap
12
Referansı geçti. Bunu test edebilirsin. Bildirin: Sonra
class A{}
struct B { let a = A()}
:
let b = B()
print("A = \(unsafeAddressOf(b.a))")//0x0000600000019450
let b_copy = b
print("A = \(unsafeAddressOf(b_copy.a))")//0x0000600000019450
5
Tüm özellikler kopyalanan bir yapının (Atanmış sanki (=
) yeni yapının ilgili özelliğine eski yapının her bir özellik) struct ne olursa olsun, yapı kopyalandığında.
"Sınıf özniteliği" derken, bir başvuru türü değişkeni kastettiğinizi varsayar. (Bir sınıfla aynı ada sahip olan tür, o sınıfın nesnelerini işaret eden başvurular için bir başvuru türünü belirtir.) Bir referans türü (bir referans) değerini kopyalamak, aynı nesneyi işaret eden başka bir referans oluşturur. "Nesneler" in Swift'deki değerler olmadığını unutmayın - "nesne türleri" yoktur - daha ziyade nesneler, onlara işaret eden referanslar aracılığıyla her zaman manipüle edilir.