Sobes.tech
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)
        }
    }
}