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ğinInt,Double,Boolgibi 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,
structveyaenumolarak tanımlanmış bir tür, değer tipidir. classolarak 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.