Swift'te referansal tipler için bellek yönetimi nasıl yapılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'te, referans tipleri (sınıflar) için bellek yönetimi, otomatik referans sayımı (ARC, Automatic Reference Counting) ile gerçekleştirilir. Heap'teki her nesne, bir referans sayacı tutar: bu nesneye aktif referansların sayısı. Yeni bir referans oluşturulduğunda sayaç artar, ve referans kullanılmaz hale geldiğinde azalır. Sayaç sıfıra ulaştığında, nesne otomatik olarak bellekten silinir.
Örnek:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var a: Person? = Person(name: "Alice") // sayaç = 1
var b = a // sayaç = 2
b = nil // sayaç = 1
a = nil // sayaç = 0, nesne silinir
İki nesne birbirine referans verdiğinde, bellek serbest bırakmayı engelleyen döngüsel referanslar (retain cycles) oluşmaması önemlidir. Bunun için zayıf (weak) ve sahip olmayan (unowned) referanslar kullanılır.
Değer tipleri (yapılar, enumlar) yığında saklanır ve atama sırasında kopyalanır, bu nedenle ARC bunlara uygulanmaz.