Junior — Middle
Kako otkrivate i otklanjate curenje memorije u svojim aplikacijama?
sobes.tech АИ
Одговор од АИ
Za otkrivanje curenja memorije u iOS aplikacijama, obično koristim alate Xcode-a kao što su Instruments sa profilima Leaks i Allocations.
- Pokrećem aplikaciju putem Instruments-a i proveravam da li se pojavljuju curenja u realnom vremenu.
- Analiziram objekte koji se ne oslobađaju i njihove lance zadržavanja (retaining cycles).
- Često, curenja nastaju zbog jakih cikličnih referenci, na primer, između objekata ili zatvaranja, pa proveravam korišćenje weak i unowned referenci.
Primer za uklanjanje retencijskog ciklusa u zatvaranju:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
self?.doSomething()
}
}
func doSomething() {
print("Akcija")
}
}
Ovde, korišćenje [weak self] sprečava jak ciklus zadržavanja između objekta i zatvaranja.
Takođe, korisno je koristiti statički analizator Xcode-a (Product -> Analyze) za identifikaciju potencijalnih problema sa memorijom.