Junior — Middle
Kapanışlar kullanan kodda neden zayıf bir referans olan (weak self) kullanılması önerilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Zayıf referans (weak self) kullanımı, güçlü referans döngülerini (retain cycles) önlemek için gereklidir; bu döngüler bellek sızıntılarına yol açar.
Bir kapanış self'i güçlü bir referans olarak yakalarsa ve self bu kapanışı içeriyorsa (örneğin, bir özellikte), birbirlerini tutarlar ve hiçbir nesne serbest bırakılmaz.
Zayıf referans kullanımı örneği:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Burada, self zayıf olarak yakalanır, bu nedenle nesne self kapanıştan önce yok edilirse, kapanış onu bellekte tutmaz ve bu da sızıntıyı önler.