Sobes.tech
Junior — Middle

Kokias metodikas naudojate savo projektuose atminties nutekėjimams aptikti?

sobes.tech AI

Atsakymas iš AI

Įprastai, norėdami aptikti atminties nutekėjimus iOS projektuose, naudoju šiuos metodus:

  • Instruments įrankį (ypač Leaks ir Allocations) stebėti atminties naudojimą ir aptikti nutekėjimus.
  • Analizuoti stiprių nuorodų ciklus (retain cycles) naudojant Xcode Memory Graph Debugger.
  • Patikrinti, ar tinkamai naudojamos silpnos (weak) ir be savininko (unowned) nuorodos uždarymuose ir delegatuose.

Pavyzdys: jei objektas A laiko objektą B, o B uždarymo metu laiko A be weak, susidaro išlaikymo ciklas, ir atmintis nebus atlaisvinta.

class ViewController {
    var closure: (() -> Void)?
    func setup() {
        closure = { [weak self] in
            print(self?.description ?? "No self")
        }
    }
}

Čia [weak self] naudojimas užkerta kelią nutekėjimams.