Sobes.tech
Junior — Middle

Ar turite patirties ieškant ir šalinant atminties ar išteklių nutekėjimus savo projektuose?

sobes.tech AI

Atsakymas iš AI

Taip, iOS projektuose susidūriau su atminties nutekėjimais, dažniausiai susijusiais su ciklinėmis nuorodomis tarp objektų, pavyzdžiui, tarp užklausų ir klasių. Norėdamas aptikti tokius nutekėjimus, naudojausi Xcode įrankiais su Leaks ir Allocations profiliais.

Nutekėjimus ištaisiau naudodamas silpnas (weak) arba be savininko (unowned) nuorodas ten, kur reikėjo, kad nutrauktų laikymo ciklus. Taip pat tikrinau išteklių teisingą atlaisvinimą ir pranešimų atšaukimą.

Silpnos nuorodos pavyzdys užklausos viduje:

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

    func setupClosure() {
        closure = { [weak self] in
            guard let self = self else { return }
            print(self.view)
        }
    }
}