Как отладить (debug) приложение в середине выполнения анимации в iOS?

«Как отладить (debug) приложение в середине выполнения анимации в iOS?» — вопрос из категории Тестирование, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, это возможно с помощью инструментов Xcode.

1. Debug View Hierarchy (Визуальная инспекция): Нажмите Cmd + Shift + D во время выполнения анимации. Этот инструмент "заморозит" интерфейс и покажет иерархию представлений в их текущем, промежуточном состоянии.

2. Использование LLDB для доступа к слою презентации: Во время паузы на точке останова (breakpoint) можно запросить у Core Animation текущие кадры анимации.

  • Каждое анимируемое свойство (frame, opacity, transform) имеет два слоя:

    • model layer — конечное значение анимации.
    • presentation layer — текущее значение на экране.

    Команды в консоли LLDB:

    // Получить текущий frame анимируемого view
    (lldb) po myView.layer.presentation()?.frame
    
    // Проверить, анимируется ли свойство прямо сейчас
    (lldb) po myView.layer.animationKeys()

3. Практический пример в коде:

   UIView.animate(withDuration: 2.0) {
       myView.center.y += 200
   }
   // Установите точку останова здесь и через 1 секунду выполните в LLDB:
   // (lldb) po myView.layer.presentation()?.frame
   // Вы увидите промежуточное значение Y (например, ~100).

4. Отладка через кнопку паузы (Pause): Просто нажмите кнопку Pause в дебаггере Xcode во время анимации — выполнение прервется, и вы сможете исследовать состояние.