Sobes.tech
Junior — Middle

Hogyan észleli és javítja a memória szivárgásokat alkalmazásaiban?

sobes.tech MI

Válasz az MI-től

Az iOS alkalmazások memória szivárgásainak felismeréséhez általában az Xcode eszközeit használom, például az Instruments-t a Leaks és Allocations profilokkal.

  1. Az alkalmazást az Instruments segítségével indítom el, és figyelem, hogy valós időben megjelennek-e szivárgások.
  2. Elemzem azokat az objektumokat, amelyek nem szabadulnak fel, és azok tartási láncait (retain cycles).
  3. Gyakran a szivárgások erős ciklikus hivatkozások miatt fordulnak elő, például objektumok vagy zárványok között, ezért ellenőrzöm a weak és unowned hivatkozások használatát.

Példa a retain cycle megszüntetésére egy zárványban:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            self?.doSomething()
        }
    }

    func doSomething() {
        print("Akció")
    }
}

Itt a [weak self] használata megakadályozza az erős tartási ciklust az objektum és a zárvány között.

Szintén hasznos az Xcode statikus elemzőjének (Product -> Analyze) használata a memória problémák felismerésére.