Sobes.tech
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.