Junior — Middle
Van tapasztalatod memória- vagy erőforrás-szivárgások keresésében és megszüntetésében a projektjeidben?
sobes.tech MI
Válasz az MI-től
Igen, iOS projektekben memória szivárgásokkal találkoztam, amelyek általában ciklikus hivatkozásokkal kapcsolatosak az objektumok között, például zárványok és osztályok között. Ezeket a szivárgásokat az Xcode Instruments eszközeivel, a Leaks és Allocations profilerrel kerestem.
A szivárgásokat úgy javítottam ki, hogy szükség esetén gyenge (weak) vagy tulajdon nélküli (unowned) hivatkozásokat alkalmaztam a tartási ciklusok megszakítására. Emellett ellenőriztem az erőforrások helyes felszabadítását és az értesítésekből való leiratkozást.
Példa gyenge hivatkozásra egy zárványban:
class ViewController: UIViewController {
var closure: (() -> Void)?
func setupClosure() {
closure = { [weak self] in
guard let self = self else { return }
print(self.view)
}
}
}