Sobes.tech
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)
        }
    }
}