Sobes.tech
Junior — Middle

Hangi bellek yerinde veya hangi mekanizmada, referans sayacını artırmayan ve nesneyi tutmayan referans yönetilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'ta, otomatik hafıza yönetimi (ARC) kullanılırken, zayıf (weak) referanslar kavramı vardır. Zayıf referans, bir nesneye yapılan ve referans sayacını (retain count) artırmayan, nesneyi bellekte tutmayan bir referanstır.

Bu tür referanslar genellikle ARC tarafından yönetilen özel bir bellek alanında saklanan zayıf göstericiler mekanizması kullanılarak uygulanır. Zayıf referansın gösterdiği nesne serbest bırakıldığında, zayıf referans otomatik olarak nil'e ayarlanır, böylece sarkan göstericiler engellenir.

Bu şekilde, zayıf referans nesnenin yaşam döngüsünü etkilemez ve onu bellekte tutmaz. Bu, örneğin, delege ile sahibi arasında döngüsel referansların önlenmesi için faydalıdır.

Swift'te örnek:

class Person {
    var name: String
    weak var delegate: PersonDelegate?
    init(name: String) {
        self.name = name
    }
}

protocol PersonDelegate: AnyObject {
    func didUpdateName()
}

Burada, delegate zayıf bir referanstır ve referans sayacını artırmaz, ayrıca delege nesnesini tutmaz.