Junior — Middle
Bir nesne tarafından kullanılan belleğin sistem içinde nasıl serbest bırakıldığını açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS'ta nesnelerin bellekten serbest bırakılması genellikle ARC (Otomatik Referans Sayımı) mekanizmasıyla gerçekleşir.
Bellekteki her nesnenin bir referans sayacı vardır: ona aktif olarak referans verenlerin sayısı. Bir nesneye referans oluşturulduğunda, sayaç artar; referans silindiğinde ise azalır. Sayaç sıfıra ulaştığında, nesne otomatik olarak bellekten kaldırılır.
Örnek:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Alex") // referans sayısı = 1
var person2 = person1 // referans sayısı = 2
person1 = nil // referans sayısı = 1
person2 = nil // referans sayısı = 0, nesne serbest bırakılır
Eğer döngüsel referanslar (örneğin, birbirine referans eden iki nesne) varsa, ARC otomatik olarak bellekten kurtulamaz. Bu durumda, zayıf (weak) veya sahip olmayan (unowned) referanslar kullanılır; bunlar sayacı artırmaz.