Sobes.tech
Middle

Swift'te bir diziyi ve yapıları kopyalamak arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te bir diziyi kopyalamak, tüm içeriğin yeni ve bağımsız bir kopyasını oluşturur. Orijinal dizideki değişiklikler kopyayı etkilemez ve tersi de geçerlidir.

Swift'te bir yapıyı kopyalamak da tüm özelliklerinin yeni bir kopyasını oluşturur. Yapı içeriğinde gömülü referans tipleri (örneğin, sınıflar) varsa, bu nesneye referans kopyalanır, nesnenin kendisi değil. Kopyalanmış yapının içindeki referans tipi üzerinde yapılan değişiklikler orijinalde de görünür.

struct Point {
    var x: Int
    var y: Int
}

// Yapıyı kopyalama
var point1 = Point(x: 10, y: 20)
var point2 = point1 // Yapıyı kopyalama
point2.x = 30
print(point1.x) // 10 yazdırır (point1 değişmedi)

class Container {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

struct HasReference {
    var data: Container
}

// Referans tipi içeren yapıyı kopyalama
var ref1 = HasReference(data: Container(value: 100))
var ref2 = ref1 // Yapıyı kopyalama
ref2.data.value = 200 // Yapı içindeki referans tipini değiştiriyoruz
print(ref1.data.value) // 200 yazdırır (değişiklik yansıdı)

// Dizi kopyalama (değere göre)
var array1 = [1, 2, 3]
var array2 = array1 // Dizi kopyalama
array2[0] = 10
print(array1[0]) // 1 yazdırır (array2'deki değişiklik array1'i etkilemedi)

// Referans tipleri içeren diziyi kopyalama
var containers1 = [Container(value: 1), Container(value: 2)]
var containers2 = containers1 // Dizi kopyalama (referanslar kopyalanır)
containers2[0].value = 10 // array2'deki referans aracılığıyla değiştir
print(containers1[0].value) // 10 yazdırır (değişiklik yansıdı)

Özellik Dizi Referans olmayan yapı (sadece değer özellikleri) Referans özellikleri olan yapı
Kopyalama ilkesi Değere göre (sığ kopya) Değere göre Değere göre (referanslar kopyalanır)
Kopyaların bağımsızlığı İçeriğe göre bağımsız Tüm özelliklere göre bağımsız Özellik-değer bağımsız, referans özellikleri bağımlı
Derin kopya Açıkça uygulanması gerekir Doğal olarak Referans özellikleri için açıkça uygulanması gerekir