Sobes.tech
Junior

Referans tipleri ile değer tipleri arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Referans, orada depolanan verilere işaret eden bellekteki bir adresi tutar. Aslında, referansı tutan değişken sadece bu adresi sahip olur, verileri değil. Bir referans tipi, bir değişkene atandığında, referansı kopyalar, verileri değil. Referansın gösterdiği verilere yapılan değişiklikler, bu referansı tutan tüm değişkenlerde yansır.

Değer tipi ise doğrudan verileri saklar. Bir değeri tipi, bir değişkene atandığında, verilerin kendisini kopyalar. Bir değer tipi değişkeninde yapılan değişiklikler, bu kopyayı alan diğer değişkenleri etkilemez.

Özellik Referans Tipi Değer Tipi
Depolama Veriye referans Kendisi veriler
Atama Referansın kopyası Verilerin kopyası
Değişiklik Tüm referansları etkiler Kopyaları etkilemez
Konum Heap'te Stack'te
Serbest bırakma ARC / çöp toplayıcı Otomatik olarak kapsam dışına çıkıldığında
Swift örnekleri class, closure struct, enum, tuple, temel tipler (Int, Bool, String, vb.)
// Referans tipi örneği (sınıf)
class ReferenceType {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

let ref1 = ReferenceType(value: 10)
let ref2 = ref1 // Referans kopyalanır
ref2.value = 20 // ref1 ve ref2'nin gösterdiği veriler değişir
print(ref1.value) // Çıktı: 20
print(ref2.value) // Çıktı: 20

// Değer tipi örneği (yapı)
struct ValueType {
    var value: Int
}

var val1 = ValueType(value: 10)
var val2 = val1 // Veriler kopyalanır
val2.value = 20 // Sadece val2'nin verileri değişir
print(val1.value) // Çıktı: 10
print(val2.value) // Çıktı: 20