Junior — Middle
В кои ситуации е по-добре да използвате слаба препратка (weak var) в Swift?
sobes.tech AI
Отговор от AI
Слабите препратки (weak var) в Swift се използват за предотвратяване на цикли на силни препратки (retain cycles), които водят до течове на памет. Препоръчително е да се използват слабите препратки в следните ситуации:
- Когато обект A препраща към обект B, а обект B препраща обратно към обект A, и една от тези препратки трябва да бъде слабa, за да се избегне цикъл.
- При делегати (delegates), където делегатът обикновено се обявява като weak, за да не задържа обекта делегат в паметта.
Пример:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// актуализация на интерфейса
}
}
Тук self се улавя като слаб препратка, за да се избегне цикълът на задържане между таймера и контролера.