Junior — Middle
Atanan bellek kaybı nedir ve bir uygulamada nasıl oluşabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS uygulamasında bellek sızıntısı (memory leak), uygulamanın artık ihtiyaç duyulmayan nesnelere referans tutmaya devam ettiği bir durumdur; bu, belleğin serbest bırakılmamasına ve zamanla daha fazla kaynağın tüketilmesine neden olur.
Nedenleri:
- Nesneler arasında döngüsel referanslar (retain cycles), özellikle ARC (Otomatik Referans Sayımı) kullanılırken.
- self ile yakalama yapan kapanışlar (closures) kullanımı, zayıf referanslar (weak/self) olmadan.
- Kaynakların yanlış yönetimi, örneğin, delegelerin serbest bırakılmaması.
Bir kapanış ile retain cycle örneği:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // weak olmadan self'nin yakalanması
}
}
}
Bunu önlemek için [weak self] kullanılmalıdır:
closure = { [weak self] in
guard let self = self else { return }
print(self)
}
Xcode araçlarıyla (Instruments — Leaks) düzenli analiz, bellek sızıntılarını tespit etmeye ve gidermeye yardımcı olur.