Sobes.tech
Junior

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

sobes.tech yapay zeka

AI'dan gelen yanıt

Değer Tipleri (Value Types), atama veya fonksiyona geçirme sırasında kopyalanır. Her örneğin kendi veri kopyası vardır.

Referans Tipleri (Reference Types) ise atama veya fonksiyona geçirme sırasında aynı veri örneğine referans iletilir. Bir referans aracılığıyla yapılan değişiklikler, bu örneğe bağlı tüm diğer referanslara yansır.

Özellik Değer Tipi (Value Type) Referans Tipi (Reference Type)
Atama/Geçirme davranışı Kopyalama Referans iletimi
Bellek konumu Yığın (Heap) Yığın (Stack)
Bellek yönetimi Otomatik (yığın aracılığıyla) Otomatik (ARC)
Swift'te örnekler struct, enum, tuple class, func, closure
// Değer Tipi Örneği (Struct)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2, p1'in bir kopyasını alır
p2.x = 10   // p2'deki değişiklik, p1'i etkilemez
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

// Referans Tipi Örneği (Sınıf)
class Coordinate {
    var x: Int
    var y: Int
    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }
}

var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2, c1 ile aynı nesneye referans eder
c2.x = 10   // c2'deki değişiklik, c1'i etkiler çünkü ikisi de aynı nesneye referans eder
print("c1: \(c1.x)") // c1: 10
print("c2: \(c2.x)") // c2: 10