Sobes.tech
Junior — Middle

Máš zkušenosti s hledáním a odstraňováním úniků paměti nebo zdrojů ve svých projektech?

sobes.tech AI

Odpověď od AI

Ano, v projektech iOS jsem se setkal s úniky paměti, obvykle spojenými s cyklickými odkazy mezi objekty, například mezi uzávěry a třídami. K detekci těchto úniků jsem používal nástroje Instruments v Xcode s profily Leaks a Allocations.

Úniky jsem opravil použitím slabých (weak) nebo bezvlastnických (unowned) odkazů tam, kde bylo třeba, aby se přerušily cykly držení. Také jsem kontroloval správné uvolnění zdrojů a odhlášení z oznámení.

Příklad slabého odkazu v uzávěru:

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

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