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

  1. Pokrećem aplikaciju putem Instruments-a i proveravam da li se pojavljuju curenja u realnom vremenu.
  2. Analiziram objekte koji se ne oslobađaju i njihove lance zadržavanja (retaining cycles).
  3. Č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.