Junior — Middle
Czy masz doświadczenie w wyszukiwaniu i usuwaniu wycieków pamięci lub zasobów w swoich projektach?
sobes.tech AI
Odpowiedź od AI
Tak, w projektach iOS miałem do czynienia z wyciekami pamięci, najczęściej związanymi z cyklicznymi odniesieniami między obiektami, na przykład między zamknięciami a klasami. Aby znaleźć takie wycieki, korzystałem z narzędzi Instruments w Xcode z profilerami Leaks i Allocations.
Naprawiłem wycieki, stosując słabe (weak) lub bezwładne (unowned) odniesienia tam, gdzie było to konieczne, aby przerwać cykle utrzymania. Sprawdzałem również poprawność zwalniania zasobów i odsubskrybowania od powiadomień.
Przykład słabego odniesienia w zamknięciu:
class ViewController: UIViewController {
var closure: (() -> Void)?
func setupClosure() {
closure = { [weak self] in
guard let self = self else { return }
print(self.view)
}
}
}