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.