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