Middle
Swift programlama dilinde bir diziyi kopyalamak ile bir yapıyı kopyalamak arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kopyalanan yapı yeni bağımsız bir örnektir. Bir yapıda yapılan değişiklikler diğerini etkilemez.
Swift'te dizinin (Array) kopyalanması varsayılan olarak "kopya-yazma sırasında" (copy-on-write) gerçekleşir. Bu, yeni bir dizi referansı oluşturduğunuzda, verilerin çoğaltılmadığı anlamına gelir; en fazla bir kopya değiştirilene kadar. Bu noktaya kadar, her iki değişken de bellekte aynı öğelere işaret eder. Bir kopya değiştirildiğinde, yeni bağımsız bir veri örneği oluşturulur.
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // Yapının kopyası. p2 yeni bir örnektir
p2.x = 10 // p2'deki değişiklik p1'i etkilemez
print("p1: \(p1.x), \(p1.y)") // Çıktı: p1: 1, 2
print("p2: \(p2.x), \(p2.y)") // Çıktı: p2: 10, 2
var array1 = [1, 2, 3]
var array2 = array1 // Yazma sırasında kopya
array2[0] = 10 // Gerçek veri kopyası gerçekleşir
print("array1: \(array1)") // Çıktı: array1: [1, 2, 3]
print("array2: \(array2)") // Çıktı: array2: [10, 2, 3]
Fark, temel davranışta yatar: yapılar her zaman değer ile kopyalanır, diziler ise yapılar oldukları için "kopya-yazma" optimizasyonunu uygularlar ve böylece bellek yönetimini daha verimli hale getirirler.