Junior — Middle
Kuidas te avastate ja parandate mälulekkeid oma rakendustes?
sobes.tech AI
Vastus AI-lt
Memori lekkedega tekitamiseks iOS rakendustes kasutan tavaliselt Xcode tööriistu, nagu Instruments koos Leaks ja Allocations profiilidega.
- Käivitan rakenduse Instruments abil ja jälgin, kas toimub reaalajas lekked.
- Analüüsin objekte, mis ei vabastata ning nende hoidmisketi (retaining cycles).
- Sageli tekivad lekked tugevate tsükliliste viidete tõttu, näiteks objektide või sulgude vahel, seetõttu kontrollin weak ja unowned viidete kasutamist.
Näide, kuidas eemaldada retaining cycle sulgus:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
self?.doSomething()
}
}
func doSomething() {
print("Tegevus")
}
}
Siin takistab [weak self] tugevate tsükliliste viidete tekkimist objekti ja sulgu vahel.
Samuti on kasulik kasutada Xcode'i staatilist analüüsijat (Product -> Analyze), et tuvastada potentsiaalseid mäluprobleeme.