Ответ
ActivityIndicator продолжает анимацию после паузы в дебаггере, потому что анимация управляется системным уровнем (Core Animation) и не зависит от выполнения кода в главном потоке. Когда дебаггер приостанавливает выполнение, главный поток блокируется, но запланированные анимации в CALayer продолжают выполняться.
Техническая причина:
- Анимация
UIActivityIndicatorViewреализована черезCAAnimationв отдельном потоке рендеринга. - Команда
stopAnimating()лишь устанавливает флаг и планирует обновление слоя, которое не может выполниться при заблокированном главном потоке.
Пример проблемы:
activityIndicator.startAnimating()
// Точка останова дебаггера
activityIndicator.stopAnimating() // Этот код не выполняется
Решение:
- Вызовите
stopAnimating()при возобновлении работы приложения:NotificationCenter.default.addObserver( forName: UIApplication.didBecomeActiveNotification, object: nil, queue: .main ) { _ in activityIndicator.stopAnimating() } - Используйте флаг для ручного управления состоянием в
viewWillAppear/viewDidDisappear.