Sobes.tech
Junior — Middle

Kuidas te avastate ja parandate mälulekkeid oma rakendustes?

sobes.tech AI

Vastus AI-lt

Memori lekkedega tekitamiseks iOS rakendustes kasutan tavaliselt Xcode tööriistu, nagu Instruments koos Leaks ja Allocations profiilidega.

  1. Käivitan rakenduse Instruments abil ja jälgin, kas toimub reaalajas lekked.
  2. Analüüsin objekte, mis ei vabastata ning nende hoidmisketi (retaining cycles).
  3. Sageli tekivad lekked tugevate tsükliliste viidete tõttu, näiteks objektide või sulgude vahel, seetõttu kontrollin weak ja unowned viidete kasutamist.

Näide, kuidas eemaldada retaining cycle sulgus:

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

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

    func doSomething() {
        print("Tegevus")
    }
}

Siin takistab [weak self] tugevate tsükliliste viidete tekkimist objekti ja sulgu vahel.

Samuti on kasulik kasutada Xcode'i staatilist analüüsijat (Product -> Analyze), et tuvastada potentsiaalseid mäluprobleeme.