Sobes.tech
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.