Junior — Middle
Bir programda bir nesnenin kapladığı bellek nasıl serbest bırakılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS'ta bellek serbest bırakma genellikle ARC (Otomatik Referans Sayımı) sistemi sayesinde otomatik olarak gerçekleşir. Her nesnenin bir referans sayacı vardır; bu sayı yeni güçlü bir referans oluşturulduğunda artar ve silindiğinde azalır. Sayı sıfıra ulaştığında, nesne otomatik olarak yok edilir ve bellek serbest bırakılır.
Kodda döngüsel referanslar (örneğin, birbirine güçlü referanslar içeren iki nesne) oluşursa, bellek serbest bırakılmaz. Bu sorunu çözmek için zayıf (weak) veya sahip olmayan (unowned) referanslar kullanılır.
Örnek:
class Person {
var name: String
weak var apartment: Apartment? // döngüyü önlemek için zayıf referans
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // sahip olmayan referans
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Bu şekilde, referanslar doğru yönetildiğinde bellek otomatik olarak serbest bırakılır.