Junior — Middle
Да ли имаш искуство у проналажењу и отклањању цурења меморије или ресурса у својим пројектима?
sobes.tech АИ
Одговор од АИ
Da, u iOS projektima sam se suočavao sa curenjem memorije, uglavnom povezanim sa cikličkim referencama između objekata, na primer između zatvaranja i klasa. Za pronalaženje takvih curenja koristio sam alate Instruments u Xcode-u sa profilima Leaks i Allocations.
Popravio sam curenja koristeći slabe (weak) ili bezvlasničke (unowned) reference tamo gde je bilo potrebno da se prekinu ciklusi zadržavanja. Takođe sam proveravao ispravno oslobađanje resursa i odjavu od obaveštenja.
Primer slabe reference u zatvaranju:
class ViewController: UIViewController {
var closure: (() -> Void)?
func setupClosure() {
closure = { [weak self] in
guard let self = self else { return }
print(self.view)
}
}
}