Junior — Middle
Uygulamalarınızda bellek sızıntılarını nasıl tespit edip gideriyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS uygulamalarında bellek sızıntılarını tespit etmek için genellikle Instruments ile Leaks ve Allocations profilleri gibi Xcode araçlarını kullanıyorum.
- Uygulamayı Instruments üzerinden başlatıyorum ve gerçek zamanlı olarak sızıntı olup olmadığını kontrol ediyorum.
- Serbest bırakılmayan nesneleri ve bunların tutma zincirlerini (retaining cycles) analiz ediyorum.
- Sık sık, nesneler veya kapanışlar arasındaki güçlü döngüsel referanslar nedeniyle sızıntılar oluşur, bu yüzden weak ve unowned referansların kullanımını kontrol ediyorum.
Bir kapanışta retain cycle'ını ortadan kaldırma örneği:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
self?.doSomething()
}
}
func doSomething() {
print("Eylem")
}
}
Burada, [weak self] kullanımı, nesne ile kapanış arasındaki güçlü tutma döngüsünü engeller.
Ayrıca, potansiyel bellek sorunlarını tespit etmek için Xcode'un statik analizörünü (Product -> Analyze) kullanmak faydalıdır.