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)
}
}
}