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