Sobes.tech
Junior — Middle

Bellek döngülerini önlemek için nesne modelinde bağlantıları nasıl doğru organize edilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

iOS'ta (Swift veya Objective-C kullanarak) nesne modeli içinde döngüsel hafıza sızıntısını önlemek için, güçlü (strong), zayıf (weak) ve sahip olmayan (unowned) referansların doğru kullanılması önemlidir.

Ana fikir:

  • strong — sahip olan referans, nesnenin referans sayacını artırır.
  • weak — sahip olmayan referans, sayacı artırmaz, nesne silindiğinde otomatik olarak nil olur.
  • unowned — sahip olmayan referans, sayacı artırmaz, ancak nil olmaz, nesnenin daha uzun süre yaşayacağı garanti edildiğinde kullanılır.

Sık sık döngüler oluşur, örneğin, ebeveyn ve çocuk arasında veya delege ile nesne arasında. Döngüleri önlemek için:

  • Ebeveyn, çocuğu strong ile tutar.
  • Çocuk, ebeveynine weak veya unowned ile referans verir.

Swift'te örnek:

class Parent {
    var child: Child?
}

class Child {
    weak var parent: Parent?  // döngüyü önlemek için zayıf referans
}

let parent = Parent()
let child = Child()
parent.child = child
child.parent = parent

Bu şekilde, parent ve child kullanılmadığında, hafıza doğru şekilde serbest bırakılır, döngülerden ve sızıntılardan kaçınılır.