Sobes.tech
Junior — Middle

Referanslara dayalı veri türlerini, değerleri doğrudan depolayan veri türlerinden nasıl ayırt edebilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'te (Swift ve Objective-C) veri türleri değer tipleri (value types) ve referans tipleri (reference types) olarak ayrılır.

  • Değer tipleri verileri doğrudan depolar. Atama veya fonksiyona geçirme sırasında, verilerin bir kopyası oluşturulur. Swift'te bunlar yapılar (struct), enum'lar (enum) ve temel türler, örneğin Int, Double, Bool gibi türlerdir.

  • Referans tipleri ise verilerin bulunduğu bellek alanına bir referans tutar. Atama sırasında, referans kopyalanır, veriler değil. Bir referans aracılığıyla yapılan değişiklikler diğerleri tarafından görülür. Swift'te bunlar sınıflardır (class).

Nasıl ayırt edilir:

  • Swift'te, struct veya enum olarak tanımlanmış bir tür, değer tipidir.
  • class olarak tanımlanmışsa, referans tipidir.

Örnek:

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

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0 - kopya değişmedi

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob - her iki değişken de aynı nesneye referans eder

Bu şekilde, atama ve değişiklik davranışlarına bakarak, referans tabanlı tipleri ve doğrudan değer tutan tipleri ayırt edebilirsiniz.